diff --git a/_module/dlg/oc_ai_henchmen.dlg.json b/_module/dlg/oc_ai_henchmen.dlg.json index d9ca1b6..72c80ab 100644 --- a/_module/dlg/oc_ai_henchmen.dlg.json +++ b/_module/dlg/oc_ai_henchmen.dlg.json @@ -56,7 +56,50 @@ }, "ConditionParams": { "type": "list", - "value": [] + "value": [ + { + "__struct_id": 0, + "Key": { + "type": "cexostring", + "value": "nTRUE" + }, + "Value": { + "type": "cexostring", + "value": "0" + } + } + ] + }, + "Index": { + "type": "dword", + "value": 248 + }, + "IsChild": { + "type": "byte", + "value": 0 + } + }, + { + "__struct_id": 1, + "Active": { + "type": "resref", + "value": "0c_if_scout" + }, + "ConditionParams": { + "type": "list", + "value": [ + { + "__struct_id": 0, + "Key": { + "type": "cexostring", + "value": "nTRUE" + }, + "Value": { + "type": "cexostring", + "value": "1" + } + } + ] }, "Index": { "type": "dword", @@ -68,7 +111,7 @@ } }, { - "__struct_id": 1, + "__struct_id": 2, "Active": { "type": "resref", "value": "0c_if_identify" @@ -87,7 +130,7 @@ } }, { - "__struct_id": 2, + "__struct_id": 3, "Active": { "type": "resref", "value": "0c_if_open_inven" @@ -106,7 +149,7 @@ } }, { - "__struct_id": 3, + "__struct_id": 4, "Active": { "type": "resref", "value": "" @@ -125,7 +168,7 @@ } }, { - "__struct_id": 4, + "__struct_id": 5, "Active": { "type": "resref", "value": "0c_if_has_class" @@ -199,103 +242,6 @@ "value": 0 } }, - { - "__struct_id": 5, - "Active": { - "type": "resref", - "value": "0c_if_has_class" - }, - "ConditionParams": { - "type": "list", - "value": [ - { - "__struct_id": 0, - "Key": { - "type": "cexostring", - "value": "nClass1" - }, - "Value": { - "type": "cexostring", - "value": "1" - } - }, - { - "__struct_id": 1, - "Key": { - "type": "cexostring", - "value": "nClass2" - }, - "Value": { - "type": "cexostring", - "value": "2" - } - }, - { - "__struct_id": 2, - "Key": { - "type": "cexostring", - "value": "nClass3" - }, - "Value": { - "type": "cexostring", - "value": "3" - } - }, - { - "__struct_id": 3, - "Key": { - "type": "cexostring", - "value": "nClass4" - }, - "Value": { - "type": "cexostring", - "value": "9" - } - }, - { - "__struct_id": 4, - "Key": { - "type": "cexostring", - "value": "nClass5" - }, - "Value": { - "type": "cexostring", - "value": "10" - } - }, - { - "__struct_id": 5, - "Key": { - "type": "cexostring", - "value": "nClass6" - }, - "Value": { - "type": "cexostring", - "value": "47" - } - }, - { - "__struct_id": 6, - "Key": { - "type": "cexostring", - "value": "nClass7" - }, - "Value": { - "type": "cexostring", - "value": "48" - } - } - ] - }, - "Index": { - "type": "dword", - "value": 109 - }, - "IsChild": { - "type": "byte", - "value": 0 - } - }, { "__struct_id": 6, "Active": { @@ -386,7 +332,7 @@ }, "Index": { "type": "dword", - "value": 77 + "value": 109 }, "IsChild": { "type": "byte", @@ -399,6 +345,103 @@ "type": "resref", "value": "0c_if_has_class" }, + "ConditionParams": { + "type": "list", + "value": [ + { + "__struct_id": 0, + "Key": { + "type": "cexostring", + "value": "nClass1" + }, + "Value": { + "type": "cexostring", + "value": "1" + } + }, + { + "__struct_id": 1, + "Key": { + "type": "cexostring", + "value": "nClass2" + }, + "Value": { + "type": "cexostring", + "value": "2" + } + }, + { + "__struct_id": 2, + "Key": { + "type": "cexostring", + "value": "nClass3" + }, + "Value": { + "type": "cexostring", + "value": "3" + } + }, + { + "__struct_id": 3, + "Key": { + "type": "cexostring", + "value": "nClass4" + }, + "Value": { + "type": "cexostring", + "value": "9" + } + }, + { + "__struct_id": 4, + "Key": { + "type": "cexostring", + "value": "nClass5" + }, + "Value": { + "type": "cexostring", + "value": "10" + } + }, + { + "__struct_id": 5, + "Key": { + "type": "cexostring", + "value": "nClass6" + }, + "Value": { + "type": "cexostring", + "value": "47" + } + }, + { + "__struct_id": 6, + "Key": { + "type": "cexostring", + "value": "nClass7" + }, + "Value": { + "type": "cexostring", + "value": "48" + } + } + ] + }, + "Index": { + "type": "dword", + "value": 77 + }, + "IsChild": { + "type": "byte", + "value": 0 + } + }, + { + "__struct_id": 8, + "Active": { + "type": "resref", + "value": "0c_if_has_class" + }, "ConditionParams": { "type": "list", "value": [ @@ -502,7 +545,7 @@ } }, { - "__struct_id": 8, + "__struct_id": 9, "Active": { "type": "resref", "value": "" @@ -521,7 +564,7 @@ } }, { - "__struct_id": 9, + "__struct_id": 10, "Active": { "type": "resref", "value": "" @@ -540,7 +583,7 @@ } }, { - "__struct_id": 10, + "__struct_id": 11, "Active": { "type": "resref", "value": "0c_if_hen_leave" @@ -559,7 +602,7 @@ } }, { - "__struct_id": 11, + "__struct_id": 12, "Active": { "type": "resref", "value": "0c_if_convo" @@ -578,7 +621,7 @@ } }, { - "__struct_id": 12, + "__struct_id": 13, "Active": { "type": "resref", "value": "" @@ -6591,7 +6634,19 @@ "__struct_id": 20, "ActionParams": { "type": "list", - "value": [] + "value": [ + { + "__struct_id": 0, + "Key": { + "type": "cexostring", + "value": "sAction" + }, + "Value": { + "type": "cexostring", + "value": "GetHenchTokens" + } + } + ] }, "Animation": { "type": "dword", @@ -6696,11 +6751,23 @@ "__struct_id": 4, "Active": { "type": "resref", - "value": "x2_d1_hashench1" + "value": "0c_if_hen_target" }, "ConditionParams": { "type": "list", - "value": [] + "value": [ + { + "__struct_id": 0, + "Key": { + "type": "cexostring", + "value": "nTarget" + }, + "Value": { + "type": "cexostring", + "value": "3" + } + } + ] }, "Index": { "type": "dword", @@ -6715,11 +6782,23 @@ "__struct_id": 5, "Active": { "type": "resref", - "value": "x2_d1_hashench2" + "value": "0c_if_hen_target" }, "ConditionParams": { "type": "list", - "value": [] + "value": [ + { + "__struct_id": 0, + "Key": { + "type": "cexostring", + "value": "nTarget" + }, + "Value": { + "type": "cexostring", + "value": "4" + } + } + ] }, "Index": { "type": "dword", @@ -6734,11 +6813,23 @@ "__struct_id": 6, "Active": { "type": "resref", - "value": "x2_d1_hashench3" + "value": "0c_if_hen_target" }, "ConditionParams": { "type": "list", - "value": [] + "value": [ + { + "__struct_id": 0, + "Key": { + "type": "cexostring", + "value": "nTarget" + }, + "Value": { + "type": "cexostring", + "value": "5" + } + } + ] }, "Index": { "type": "dword", @@ -6753,11 +6844,23 @@ "__struct_id": 7, "Active": { "type": "resref", - "value": "x2_d1_hashench4" + "value": "0c_if_hen_target" }, "ConditionParams": { "type": "list", - "value": [] + "value": [ + { + "__struct_id": 0, + "Key": { + "type": "cexostring", + "value": "nTarget" + }, + "Value": { + "type": "cexostring", + "value": "6" + } + } + ] }, "Index": { "type": "dword", @@ -6795,7 +6898,7 @@ }, "Script": { "type": "resref", - "value": "x2_d1_gentags" + "value": "0c_assoc_actions" }, "Sound": { "type": "resref", @@ -8530,6 +8633,55 @@ "type": "list", "value": [] }, + "Animation": { + "type": "dword", + "value": 0 + }, + "AnimLoop": { + "type": "byte", + "value": 1 + }, + "Comment": { + "type": "cexostring", + "value": "" + }, + "Delay": { + "type": "dword", + "value": 0 + }, + "Quest": { + "type": "cexostring", + "value": "" + }, + "RepliesList": { + "type": "list", + "value": [] + }, + "Script": { + "type": "resref", + "value": "" + }, + "Sound": { + "type": "resref", + "value": "" + }, + "Speaker": { + "type": "cexostring", + "value": "" + }, + "Text": { + "type": "cexolocstring", + "value": { + "0": "" + } + } + }, + { + "__struct_id": 29, + "ActionParams": { + "type": "list", + "value": [] + }, "Animation": { "type": "dword", "value": 29 @@ -8565,7 +8717,7 @@ }, "Index": { "type": "dword", - "value": 249 + "value": 250 }, "IsChild": { "type": "byte", @@ -8584,7 +8736,7 @@ }, "Index": { "type": "dword", - "value": 248 + "value": 249 }, "IsChild": { "type": "byte", @@ -8616,7 +8768,7 @@ }, "NumWords": { "type": "dword", - "value": 1148 + "value": 1152 }, "PreventZoomIn": { "type": "byte", @@ -27034,12 +27186,69 @@ "Text": { "type": "cexolocstring", "value": { - "0": "I would like you to scout the area." + "0": "Would you stop patroling ahead." } } }, { "__struct_id": 248, + "ActionParams": { + "type": "list", + "value": [ + { + "__struct_id": 0, + "Key": { + "type": "cexostring", + "value": "sAction" + }, + "Value": { + "type": "cexostring", + "value": "Scout" + } + } + ] + }, + "Animation": { + "type": "dword", + "value": 0 + }, + "AnimLoop": { + "type": "byte", + "value": 1 + }, + "Comment": { + "type": "cexostring", + "value": "" + }, + "Delay": { + "type": "dword", + "value": 4294967295 + }, + "EntriesList": { + "type": "list", + "value": [] + }, + "Quest": { + "type": "cexostring", + "value": "" + }, + "Script": { + "type": "resref", + "value": "0c_assoc_actions" + }, + "Sound": { + "type": "resref", + "value": "" + }, + "Text": { + "type": "cexolocstring", + "value": { + "0": "I would like you to patrol ahead." + } + } + }, + { + "__struct_id": 249, "ActionParams": { "type": "list", "value": [] @@ -27084,7 +27293,7 @@ } }, { - "__struct_id": 249, + "__struct_id": 250, "ActionParams": { "type": "list", "value": [] @@ -27141,7 +27350,46 @@ }, "ConditionParams": { "type": "list", - "value": [] + "value": [ + { + "__struct_id": 0, + "Key": { + "type": "cexostring", + "value": "sInput" + }, + "Value": { + "type": "cexostring", + "value": "Can_Hire_Henchman" + } + } + ] + }, + "Index": { + "type": "dword", + "value": 29 + } + }, + { + "__struct_id": 1, + "Active": { + "type": "resref", + "value": "0c_if_not_master" + }, + "ConditionParams": { + "type": "list", + "value": [ + { + "__struct_id": 0, + "Key": { + "type": "cexostring", + "value": "sInput" + }, + "Value": { + "type": "cexostring", + "value": "Cannot_Hire_Henchman" + } + } + ] }, "Index": { "type": "dword", @@ -27149,7 +27397,7 @@ } }, { - "__struct_id": 1, + "__struct_id": 2, "Active": { "type": "resref", "value": "0c_if_ass_convo" diff --git a/_module/git/area001.git.json b/_module/git/area001.git.json index 83b8d60..c144b0a 100644 --- a/_module/git/area001.git.json +++ b/_module/git/area001.git.json @@ -1635,7 +1635,7 @@ }, "XPosition": { "type": "float", - "value": 17.60621070861816 + "value": 17.606210708618164 }, "YOrientation": { "type": "float", @@ -1647,7 +1647,7 @@ }, "ZPosition": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -2113,7 +2113,7 @@ }, "YOrientation": { "type": "float", - "value": -0.24297234416008 + "value": -0.24297234416007996 }, "YPosition": { "type": "float", @@ -2121,7 +2121,7 @@ }, "ZPosition": { "type": "float", - "value": 0.01000165939331055 + "value": 0.010001659393310547 } }, { @@ -2543,7 +2543,7 @@ }, "XPosition": { "type": "float", - "value": 54.45278167724609 + "value": 54.452781677246094 }, "YOrientation": { "type": "float", @@ -2551,11 +2551,11 @@ }, "YPosition": { "type": "float", - "value": 94.20413208007813 + "value": 94.20413208007812 }, "ZPosition": { "type": "float", - "value": 0.01000165939331055 + "value": 0.010001659393310547 } }, { @@ -2977,7 +2977,7 @@ }, "XPosition": { "type": "float", - "value": 45.83947372436523 + "value": 45.839473724365234 }, "YOrientation": { "type": "float", @@ -2989,7 +2989,7 @@ }, "ZPosition": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -3411,7 +3411,7 @@ }, "XPosition": { "type": "float", - "value": 51.75769424438477 + "value": 51.757694244384766 }, "YOrientation": { "type": "float", @@ -3423,7 +3423,7 @@ }, "ZPosition": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -3963,7 +3963,7 @@ }, "XPosition": { "type": "float", - "value": 83.09816741943359 + "value": 83.0981674194336 }, "YOrientation": { "type": "float", @@ -3975,7 +3975,7 @@ }, "ZPosition": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -4405,11 +4405,11 @@ }, "YPosition": { "type": "float", - "value": 103.3343124389648 + "value": 103.33431243896484 }, "ZPosition": { "type": "float", - "value": 0.01000165939331055 + "value": 0.010001659393310547 } }, { @@ -4827,11 +4827,11 @@ }, "XOrientation": { "type": "float", - "value": 0.336958259344101 + "value": 0.33695825934410095 }, "XPosition": { "type": "float", - "value": 125.1127395629883 + "value": 125.11273956298828 }, "YOrientation": { "type": "float", @@ -4839,11 +4839,11 @@ }, "YPosition": { "type": "float", - "value": 135.0745239257813 + "value": 135.07452392578125 }, "ZPosition": { "type": "float", - "value": 0.01000165939331055 + "value": 0.010001659393310547 } }, { @@ -5379,7 +5379,7 @@ }, "XOrientation": { "type": "float", - "value": 0.8314590454101563 + "value": 0.8314590454101562 }, "XPosition": { "type": "float", @@ -5395,7 +5395,7 @@ }, "ZPosition": { "type": "float", - "value": 0.01000165939331055 + "value": 0.010001659393310547 } }, { @@ -5813,7 +5813,7 @@ }, "XOrientation": { "type": "float", - "value": -0.1467553228139877 + "value": -0.14675532281398773 }, "XPosition": { "type": "float", @@ -5825,11 +5825,11 @@ }, "YPosition": { "type": "float", - "value": 57.19765472412109 + "value": 57.197654724121094 }, "ZPosition": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -6251,7 +6251,7 @@ }, "XPosition": { "type": "float", - "value": 56.23604583740234 + "value": 56.236045837402344 }, "YOrientation": { "type": "float", @@ -6263,7 +6263,7 @@ }, "ZPosition": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -6807,15 +6807,15 @@ }, "YOrientation": { "type": "float", - "value": 2.102055759678478e-006 + "value": 0.0000021020557596784784 }, "YPosition": { "type": "float", - "value": 65.61721801757813 + "value": 65.61721801757812 }, "ZPosition": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -8485,7 +8485,7 @@ }, "XPosition": { "type": "float", - "value": 38.73717880249023 + "value": 38.737178802490234 }, "YOrientation": { "type": "float", @@ -8497,7 +8497,7 @@ }, "ZPosition": { "type": "float", - "value": 0.01000165939331055 + "value": 0.010001659393310547 } }, { @@ -9739,11 +9739,11 @@ }, "YPosition": { "type": "float", - "value": 79.20481109619141 + "value": 79.2048110961914 }, "ZPosition": { "type": "float", - "value": 0.01000165939331055 + "value": 0.010001659393310547 } }, { @@ -10977,7 +10977,7 @@ }, "XPosition": { "type": "float", - "value": 22.29676818847656 + "value": 22.296768188476562 }, "YOrientation": { "type": "float", @@ -10989,7 +10989,7 @@ }, "ZPosition": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -12358,11 +12358,11 @@ }, "XPosition": { "type": "float", - "value": 39.84793853759766 + "value": 39.847938537597656 }, "YOrientation": { "type": "float", - "value": 2.102055759678478e-006 + "value": 0.0000021020557596784784 }, "YPosition": { "type": "float", @@ -12370,7 +12370,7 @@ }, "ZPosition": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -13739,11 +13739,11 @@ }, "XPosition": { "type": "float", - "value": 39.52547454833984 + "value": 39.525474548339844 }, "YOrientation": { "type": "float", - "value": 2.102055759678478e-006 + "value": 0.0000021020557596784784 }, "YPosition": { "type": "float", @@ -13751,7 +13751,7 @@ }, "ZPosition": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -14985,11 +14985,11 @@ }, "XPosition": { "type": "float", - "value": 101.2061920166016 + "value": 101.20619201660156 }, "YOrientation": { "type": "float", - "value": 0.04906884208321571 + "value": 0.049068842083215714 }, "YPosition": { "type": "float", @@ -14997,7 +14997,7 @@ }, "ZPosition": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -16231,11 +16231,11 @@ }, "XPosition": { "type": "float", - "value": 101.4678115844727 + "value": 101.46781158447266 }, "YOrientation": { "type": "float", - "value": 2.102055759678478e-006 + "value": 0.0000021020557596784784 }, "YPosition": { "type": "float", @@ -16243,7 +16243,7 @@ }, "ZPosition": { "type": "float", - "value": 0.01000165939331055 + "value": 0.010001659393310547 } }, { @@ -17481,15 +17481,15 @@ }, "YOrientation": { "type": "float", - "value": 2.102055759678478e-006 + "value": 0.0000021020557596784784 }, "YPosition": { "type": "float", - "value": 121.7897644042969 + "value": 121.78976440429688 }, "ZPosition": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -18723,11 +18723,11 @@ }, "XPosition": { "type": "float", - "value": 101.4217910766602 + "value": 101.42179107666016 }, "YOrientation": { "type": "float", - "value": 2.102055759678478e-006 + "value": 0.0000021020557596784784 }, "YPosition": { "type": "float", @@ -18735,7 +18735,7 @@ }, "ZPosition": { "type": "float", - "value": 0.01000165939331055 + "value": 0.010001659393310547 } }, { @@ -19969,7 +19969,7 @@ }, "XPosition": { "type": "float", - "value": 21.96595764160156 + "value": 21.965957641601562 }, "YOrientation": { "type": "float", @@ -19981,7 +19981,7 @@ }, "ZPosition": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -21215,7 +21215,7 @@ }, "XPosition": { "type": "float", - "value": 18.01044082641602 + "value": 18.010440826416016 }, "YOrientation": { "type": "float", @@ -21223,11 +21223,11 @@ }, "YPosition": { "type": "float", - "value": 59.30102157592773 + "value": 59.301021575927734 }, "ZPosition": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -21779,7 +21779,7 @@ }, "ZPosition": { "type": "float", - "value": 0.01000165939331055 + "value": 0.010001659393310547 } }, { @@ -22201,7 +22201,7 @@ }, "XPosition": { "type": "float", - "value": 47.59084320068359 + "value": 47.590843200683594 }, "YOrientation": { "type": "float", @@ -23069,19 +23069,19 @@ }, "XPosition": { "type": "float", - "value": 52.44213485717773 + "value": 52.442134857177734 }, "YOrientation": { "type": "float", - "value": 0.3826845288276672 + "value": 0.38268452882766724 }, "YPosition": { "type": "float", - "value": 27.08632850646973 + "value": 27.086328506469727 }, "ZPosition": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -24195,7 +24195,7 @@ }, "XPosition": { "type": "float", - "value": 23.20353698730469 + "value": 23.203536987304688 }, "YOrientation": { "type": "float", @@ -24207,7 +24207,7 @@ }, "ZPosition": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -24747,7 +24747,7 @@ }, "XPosition": { "type": "float", - "value": 124.5628128051758 + "value": 124.56281280517578 }, "YOrientation": { "type": "float", @@ -24759,7 +24759,7 @@ }, "ZPosition": { "type": "float", - "value": 0.01000165939331055 + "value": 0.010001659393310547 } }, { @@ -25299,7 +25299,7 @@ }, "XPosition": { "type": "float", - "value": 114.7677764892578 + "value": 114.76777648925781 }, "YOrientation": { "type": "float", @@ -25307,11 +25307,11 @@ }, "YPosition": { "type": "float", - "value": 134.9770202636719 + "value": 134.97702026367188 }, "ZPosition": { "type": "float", - "value": 0.01000165939331055 + "value": 0.010001659393310547 } }, { @@ -25745,7 +25745,7 @@ }, "ZPosition": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -27419,7 +27419,7 @@ }, "ZPosition": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -27955,7 +27955,7 @@ }, "XPosition": { "type": "float", - "value": 46.53301620483398 + "value": 46.533016204833984 }, "YOrientation": { "type": "float", @@ -27967,7 +27967,7 @@ }, "ZPosition": { "type": "float", - "value": 0.01000165939331055 + "value": 0.010001659393310547 } }, { @@ -28397,11 +28397,11 @@ }, "YPosition": { "type": "float", - "value": 115.9162216186523 + "value": 115.91622161865234 }, "ZPosition": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -29265,7 +29265,7 @@ }, "YPosition": { "type": "float", - "value": 115.3220520019531 + "value": 115.32205200195312 }, "ZPosition": { "type": "float", @@ -31053,7 +31053,7 @@ }, "XPosition": { "type": "float", - "value": 102.4517440795898 + "value": 102.45174407958984 }, "YOrientation": { "type": "float", @@ -31065,7 +31065,7 @@ }, "ZPosition": { "type": "float", - "value": 0.01000165939331055 + "value": 0.010001659393310547 } }, { @@ -32297,7 +32297,7 @@ }, "XPosition": { "type": "float", - "value": 101.9422760009766 + "value": 101.94227600097656 }, "YOrientation": { "type": "float", @@ -32305,11 +32305,11 @@ }, "YPosition": { "type": "float", - "value": 125.271614074707 + "value": 125.27161407470703 }, "ZPosition": { "type": "float", - "value": 0.01000165939331055 + "value": 0.010001659393310547 } }, { @@ -34500,7 +34500,7 @@ }, "ZPosition": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -36949,7 +36949,7 @@ }, "XPosition": { "type": "float", - "value": 24.36938667297363 + "value": 24.369386672973633 }, "YOrientation": { "type": "float", @@ -36961,7 +36961,7 @@ }, "ZPosition": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -37513,7 +37513,7 @@ }, "ZPosition": { "type": "float", - "value": 10.00999259948731 + "value": 10.009992599487305 } }, { @@ -38053,7 +38053,7 @@ }, "XPosition": { "type": "float", - "value": 303.8851928710938 + "value": 303.88519287109375 }, "YOrientation": { "type": "float", @@ -38065,7 +38065,7 @@ }, "ZPosition": { "type": "float", - "value": 10.00999259948731 + "value": 10.009992599487305 } }, { @@ -38497,7 +38497,7 @@ }, "XOrientation": { "type": "float", - "value": -0.9891770482063294 + "value": -0.9891770482063293 }, "XPosition": { "type": "float", @@ -38505,15 +38505,15 @@ }, "YOrientation": { "type": "float", - "value": -0.1467269212007523 + "value": -0.14672692120075226 }, "YPosition": { "type": "float", - "value": 83.05185699462891 + "value": 83.0518569946289 }, "ZPosition": { "type": "float", - "value": 10.00999259948731 + "value": 10.009992599487305 } }, { @@ -39829,11 +39829,11 @@ }, "XPosition": { "type": "float", - "value": 253.4949035644531 + "value": 253.49490356445312 }, "YOrientation": { "type": "float", - "value": 2.102055759678478e-006 + "value": 0.0000021020557596784784 }, "YPosition": { "type": "float", @@ -41334,7 +41334,7 @@ }, "YOrientation": { "type": "float", - "value": -0.4713962078094482 + "value": -0.47139620780944824 }, "YPosition": { "type": "float", @@ -41342,7 +41342,7 @@ }, "ZPosition": { "type": "float", - "value": 11.80000686645508 + "value": 11.800006866455078 } }, { @@ -42835,7 +42835,7 @@ }, "YOrientation": { "type": "float", - "value": -0.4713962078094482 + "value": -0.47139620780944824 }, "YPosition": { "type": "float", @@ -42843,7 +42843,7 @@ }, "ZPosition": { "type": "float", - "value": 11.80000686645508 + "value": 11.800006866455078 } }, { @@ -44328,7 +44328,7 @@ }, "XOrientation": { "type": "float", - "value": 3.059182063225308e-008 + "value": 3.0591820632253075e-8 }, "XPosition": { "type": "float", @@ -44344,7 +44344,7 @@ }, "ZPosition": { "type": "float", - "value": 10.29999160766602 + "value": 10.299991607666016 } }, { @@ -45829,7 +45829,7 @@ }, "XOrientation": { "type": "float", - "value": 3.059182063225308e-008 + "value": 3.0591820632253075e-8 }, "XPosition": { "type": "float", @@ -45845,7 +45845,7 @@ }, "ZPosition": { "type": "float", - "value": 10.29999160766602 + "value": 10.299991607666016 } }, { @@ -47165,7 +47165,7 @@ }, "YOrientation": { "type": "float", - "value": 2.102055759678478e-006 + "value": 0.0000021020557596784784 }, "YPosition": { "type": "float", @@ -47173,7 +47173,7 @@ }, "ZPosition": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -48493,7 +48493,7 @@ }, "YOrientation": { "type": "float", - "value": 0.04906884208321571 + "value": 0.049068842083215714 }, "YPosition": { "type": "float", @@ -48501,7 +48501,7 @@ }, "ZPosition": { "type": "float", - "value": -4.76837158203125e-007 + "value": -0.000000476837158203125 } }, { @@ -49817,7 +49817,7 @@ }, "XPosition": { "type": "float", - "value": 215.0737915039063 + "value": 215.07379150390625 }, "YOrientation": { "type": "float", @@ -49825,7 +49825,7 @@ }, "YPosition": { "type": "float", - "value": 36.04122924804688 + "value": 36.041229248046875 }, "ZPosition": { "type": "float", @@ -51157,7 +51157,7 @@ }, "ZPosition": { "type": "float", - "value": 6.800003051757813 + "value": 6.8000030517578125 } } ] @@ -51181,7 +51181,7 @@ }, "Bearing": { "type": "float", - "value": 1.570794224739075 + "value": 1.5707942247390747 }, "CloseLockDC": { "type": "byte", @@ -51399,7 +51399,7 @@ }, "Bearing": { "type": "float", - "value": 1.570794224739075 + "value": 1.5707942247390747 }, "CloseLockDC": { "type": "byte", @@ -51617,7 +51617,7 @@ }, "Bearing": { "type": "float", - "value": 1.570794224739075 + "value": 1.5707942247390747 }, "CloseLockDC": { "type": "byte", @@ -51808,7 +51808,7 @@ }, "X": { "type": "float", - "value": 27.70000076293945 + "value": 27.700000762939453 }, "Y": { "type": "float", @@ -51835,7 +51835,7 @@ }, "Bearing": { "type": "float", - "value": -1.570794224739075 + "value": -1.5707942247390747 }, "CloseLockDC": { "type": "byte", @@ -52026,7 +52026,7 @@ }, "X": { "type": "float", - "value": 22.60000038146973 + "value": 22.600000381469727 }, "Y": { "type": "float", @@ -52053,7 +52053,7 @@ }, "Bearing": { "type": "float", - "value": 1.570794224739075 + "value": 1.5707942247390747 }, "CloseLockDC": { "type": "byte", @@ -52271,7 +52271,7 @@ }, "Bearing": { "type": "float", - "value": -1.570794224739075 + "value": -1.5707942247390747 }, "CloseLockDC": { "type": "byte", @@ -52488,7 +52488,7 @@ }, "Bearing": { "type": "float", - "value": 1.570794224739075 + "value": 1.5707942247390747 }, "CloseLockDC": { "type": "byte", @@ -52678,7 +52678,7 @@ }, "X": { "type": "float", - "value": 127.6999969482422 + "value": 127.69999694824219 }, "Y": { "type": "float", @@ -52705,7 +52705,7 @@ }, "Bearing": { "type": "float", - "value": 1.570794224739075 + "value": 1.5707942247390747 }, "CloseLockDC": { "type": "byte", @@ -52895,7 +52895,7 @@ }, "X": { "type": "float", - "value": 127.6999969482422 + "value": 127.69999694824219 }, "Y": { "type": "float", @@ -52922,7 +52922,7 @@ }, "Bearing": { "type": "float", - "value": -1.570794224739075 + "value": -1.5707942247390747 }, "CloseLockDC": { "type": "byte", @@ -53139,7 +53139,7 @@ }, "Bearing": { "type": "float", - "value": 1.570794224739075 + "value": 1.5707942247390747 }, "CloseLockDC": { "type": "byte", @@ -53329,7 +53329,7 @@ }, "X": { "type": "float", - "value": 127.6999969482422 + "value": 127.69999694824219 }, "Y": { "type": "float", @@ -53356,7 +53356,7 @@ }, "Bearing": { "type": "float", - "value": 1.570794224739075 + "value": 1.5707942247390747 }, "CloseLockDC": { "type": "byte", @@ -53574,7 +53574,7 @@ }, "Bearing": { "type": "float", - "value": 1.570794224739075 + "value": 1.5707942247390747 }, "CloseLockDC": { "type": "byte", @@ -54011,7 +54011,7 @@ }, "Z": { "type": "float", - "value": 5.037157535552979 + "value": 5.0371575355529785 } }, { @@ -54037,7 +54037,7 @@ }, "Y": { "type": "float", - "value": -7.654891967773438 + "value": -7.6548919677734375 }, "Z": { "type": "float", @@ -54179,7 +54179,7 @@ }, "XPosition": { "type": "float", - "value": 249.8090209960938 + "value": 249.80902099609375 }, "YPosition": { "type": "float", @@ -54368,7 +54368,7 @@ }, "Y": { "type": "float", - "value": -5.407089233398438 + "value": -5.4070892333984375 }, "Z": { "type": "float", @@ -54383,7 +54383,7 @@ }, "Y": { "type": "float", - "value": -3.248144149780273 + "value": -3.2481441497802734 }, "Z": { "type": "float", @@ -54398,7 +54398,7 @@ }, "Y": { "type": "float", - "value": -0.154780387878418 + "value": -0.15478038787841797 }, "Z": { "type": "float", @@ -54513,7 +54513,7 @@ "__struct_id": 2, "Orientation": { "type": "float", - "value": 1.472621560096741 + "value": 1.4726215600967407 }, "X": { "type": "float", @@ -54521,7 +54521,7 @@ }, "Y": { "type": "float", - "value": 23.95854568481445 + "value": 23.958545684814453 }, "Z": { "type": "float", @@ -54544,7 +54544,7 @@ }, "YPosition": { "type": "float", - "value": 12.56144142150879 + "value": 12.561441421508789 }, "ZPosition": { "type": "float", @@ -54733,7 +54733,7 @@ }, "Y": { "type": "float", - "value": -1.881725311279297 + "value": -1.8817253112792969 }, "Z": { "type": "float", @@ -54782,7 +54782,7 @@ }, "Z": { "type": "float", - "value": 5.080281257629395 + "value": 5.0802812576293945 } } ] @@ -54848,7 +54848,7 @@ "__struct_id": 2, "Orientation": { "type": "float", - "value": 1.12900984287262 + "value": 1.1290098428726196 }, "X": { "type": "float", @@ -54879,7 +54879,7 @@ }, "YPosition": { "type": "float", - "value": 27.80837821960449 + "value": 27.808378219604492 }, "ZPosition": { "type": "float", @@ -55011,7 +55011,7 @@ }, "Y": { "type": "float", - "value": -11.38899993896484 + "value": -11.388999938964844 }, "Z": { "type": "float", @@ -55026,7 +55026,7 @@ }, "Y": { "type": "float", - "value": -11.55492401123047 + "value": -11.554924011230469 }, "Z": { "type": "float", @@ -55090,7 +55090,7 @@ }, "Z": { "type": "float", - "value": 5.253954410552979 + "value": 5.2539544105529785 } }, { @@ -55101,7 +55101,7 @@ }, "Y": { "type": "float", - "value": -0.4281845092773438 + "value": -0.42818450927734375 }, "Z": { "type": "float", @@ -55319,7 +55319,7 @@ }, "Z": { "type": "float", - "value": 10.02795886993408 + "value": 10.027958869934082 } }, { @@ -55334,7 +55334,7 @@ }, "Z": { "type": "float", - "value": 10.02795886993408 + "value": 10.027958869934082 } }, { @@ -55349,7 +55349,7 @@ }, "Z": { "type": "float", - "value": 10.02795886993408 + "value": 10.027958869934082 } }, { @@ -55364,7 +55364,7 @@ }, "Z": { "type": "float", - "value": 10.02795886993408 + "value": 10.027958869934082 } } ] @@ -55434,7 +55434,7 @@ }, "X": { "type": "float", - "value": 299.7322387695313 + "value": 299.73223876953125 }, "Y": { "type": "float", @@ -55442,7 +55442,7 @@ }, "Z": { "type": "float", - "value": 10.29999160766602 + "value": 10.299991607666016 } } ] @@ -55574,7 +55574,7 @@ "__struct_id": 1, "X": { "type": "float", - "value": -3.868570804595947 + "value": -3.8685708045959473 }, "Y": { "type": "float", @@ -55597,7 +55597,7 @@ }, "Z": { "type": "float", - "value": 0.02500005997717381 + "value": 0.025000059977173805 } }, { @@ -55612,14 +55612,14 @@ }, "Z": { "type": "float", - "value": 0.02500005997717381 + "value": 0.025000059977173805 } }, { "__struct_id": 1, "X": { "type": "float", - "value": -3.732091903686523 + "value": -3.7320919036865234 }, "Y": { "type": "float", @@ -55627,7 +55627,7 @@ }, "Z": { "type": "float", - "value": 0.02500005997717381 + "value": 0.025000059977173805 } } ] @@ -55693,11 +55693,11 @@ "__struct_id": 2, "Orientation": { "type": "float", - "value": 1.668970704078674 + "value": 1.6689707040786743 }, "X": { "type": "float", - "value": 209.4968414306641 + "value": 209.49684143066406 }, "Y": { "type": "float", @@ -55705,7 +55705,7 @@ }, "Z": { "type": "float", - "value": 9.924173355102539e-006 + "value": 0.000009924173355102539 } } ] @@ -55837,7 +55837,7 @@ "__struct_id": 1, "X": { "type": "float", - "value": -0.1364803314208984 + "value": -0.13648033142089844 }, "Y": { "type": "float", @@ -55845,14 +55845,14 @@ }, "Z": { "type": "float", - "value": 0.02499994076788425 + "value": 0.024999940767884254 } }, { "__struct_id": 1, "X": { "type": "float", - "value": 3.657649993896484 + "value": 3.6576499938964844 }, "Y": { "type": "float", @@ -55860,14 +55860,14 @@ }, "Z": { "type": "float", - "value": 0.02500005997717381 + "value": 0.025000059977173805 } }, { "__struct_id": 1, "X": { "type": "float", - "value": 3.657650232315064 + "value": 3.6576502323150635 }, "Y": { "type": "float", @@ -55890,7 +55890,7 @@ }, "Z": { "type": "float", - "value": 0.02500005997717381 + "value": 0.025000059977173805 } } ] @@ -56108,14 +56108,14 @@ }, "Z": { "type": "float", - "value": 0.02499994076788425 + "value": 0.024999940767884254 } }, { "__struct_id": 1, "X": { "type": "float", - "value": 3.521171092987061 + "value": 3.5211710929870605 }, "Y": { "type": "float", @@ -56123,14 +56123,14 @@ }, "Z": { "type": "float", - "value": 0.02499994076788425 + "value": 0.024999940767884254 } }, { "__struct_id": 1, "X": { "type": "float", - "value": 3.46657919883728 + "value": 3.4665791988372803 }, "Y": { "type": "float", @@ -56138,7 +56138,7 @@ }, "Z": { "type": "float", - "value": 0.02500005997717381 + "value": 0.025000059977173805 } }, { @@ -56153,7 +56153,7 @@ }, "Z": { "type": "float", - "value": 0.02499994076788425 + "value": 0.024999940767884254 } } ] @@ -56223,7 +56223,7 @@ }, "X": { "type": "float", - "value": 251.2624359130859 + "value": 251.26243591308594 }, "Y": { "type": "float", @@ -56250,7 +56250,7 @@ }, "YPosition": { "type": "float", - "value": 88.05995941162109 + "value": 88.0599594116211 }, "ZPosition": { "type": "float", @@ -56371,14 +56371,14 @@ }, "Z": { "type": "float", - "value": 0.02500005997717381 + "value": 0.025000059977173805 } }, { "__struct_id": 1, "X": { "type": "float", - "value": 3.575762748718262 + "value": 3.5757627487182617 }, "Y": { "type": "float", @@ -56386,7 +56386,7 @@ }, "Z": { "type": "float", - "value": 0.02499994076788425 + "value": 0.024999940767884254 } }, { @@ -56401,7 +56401,7 @@ }, "Z": { "type": "float", - "value": 0.02500005997717381 + "value": 0.025000059977173805 } }, { @@ -56416,7 +56416,7 @@ }, "Z": { "type": "float", - "value": 0.02499994076788425 + "value": 0.024999940767884254 } } ] @@ -56482,11 +56482,11 @@ "__struct_id": 2, "Orientation": { "type": "float", - "value": 1.423534035682678 + "value": 1.4235340356826782 }, "X": { "type": "float", - "value": 207.0870971679688 + "value": 207.08709716796875 }, "Y": { "type": "float", @@ -56494,7 +56494,7 @@ }, "Z": { "type": "float", - "value": 9.924173355102539e-006 + "value": 0.000009924173355102539 } } ] @@ -56513,7 +56513,7 @@ }, "YPosition": { "type": "float", - "value": 88.05995941162109 + "value": 88.0599594116211 }, "ZPosition": { "type": "float", @@ -56641,7 +56641,7 @@ "__struct_id": 1, "X": { "type": "float", - "value": 3.56420373916626 + "value": 3.5642037391662598 }, "Y": { "type": "float", @@ -56649,7 +56649,7 @@ }, "Z": { "type": "float", - "value": 0.02500005997717381 + "value": 0.025000059977173805 } }, { @@ -56664,7 +56664,7 @@ }, "Z": { "type": "float", - "value": 0.02500005997717381 + "value": 0.025000059977173805 } }, { @@ -56679,7 +56679,7 @@ }, "Z": { "type": "float", - "value": 0.02499994076788425 + "value": 0.024999940767884254 } } ] @@ -56749,7 +56749,7 @@ }, "X": { "type": "float", - "value": 207.8877868652344 + "value": 207.88778686523438 }, "Y": { "type": "float", @@ -56757,7 +56757,7 @@ }, "Z": { "type": "float", - "value": 0.01000165939331055 + "value": 0.010001659393310547 } } ] @@ -56772,7 +56772,7 @@ }, "XPosition": { "type": "float", - "value": 0.3909106254577637 + "value": 0.39091062545776367 }, "YPosition": { "type": "float", @@ -56866,7 +56866,7 @@ }, "XPosition": { "type": "float", - "value": 212.6517639160156 + "value": 212.65176391601562 }, "YOrientation": { "type": "float", @@ -56878,7 +56878,7 @@ }, "ZPosition": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -56971,7 +56971,7 @@ }, "ZPosition": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -57052,7 +57052,7 @@ }, "XPosition": { "type": "float", - "value": 211.9152679443359 + "value": 211.91526794433594 }, "YOrientation": { "type": "float", @@ -57064,7 +57064,7 @@ }, "ZPosition": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -57141,11 +57141,11 @@ }, "XOrientation": { "type": "float", - "value": 0.3826830387115479 + "value": 0.38268303871154785 }, "XPosition": { "type": "float", - "value": 211.2899322509766 + "value": 211.28993225097656 }, "YOrientation": { "type": "float", @@ -57157,7 +57157,7 @@ }, "ZPosition": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } } ] @@ -57383,11 +57383,11 @@ }, "Y": { "type": "float", - "value": 142.7416076660156 + "value": 142.74160766601562 }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -57608,11 +57608,11 @@ }, "Y": { "type": "float", - "value": 134.7515563964844 + "value": 134.75155639648438 }, "Z": { "type": "float", - "value": 0.01000165939331055 + "value": 0.010001659393310547 } }, { @@ -57827,7 +57827,7 @@ }, "X": { "type": "float", - "value": 40.08609771728516 + "value": 40.086097717285156 }, "Y": { "type": "float", @@ -57835,7 +57835,7 @@ }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -57854,7 +57854,7 @@ }, "Bearing": { "type": "float", - "value": 1.030834794044495 + "value": 1.0308347940444946 }, "BodyBag": { "type": "byte", @@ -58058,7 +58058,7 @@ }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -58273,7 +58273,7 @@ }, "X": { "type": "float", - "value": 20.38450241088867 + "value": 20.384502410888672 }, "Y": { "type": "float", @@ -58281,7 +58281,7 @@ }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -58500,11 +58500,11 @@ }, "Y": { "type": "float", - "value": 142.3254699707031 + "value": 142.32546997070312 }, "Z": { "type": "float", - "value": 0.01000165939331055 + "value": 0.010001659393310547 } }, { @@ -58723,11 +58723,11 @@ }, "Y": { "type": "float", - "value": 120.7757949829102 + "value": 120.77579498291016 }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -58746,7 +58746,7 @@ }, "Bearing": { "type": "float", - "value": 1.030834794044495 + "value": 1.0308347940444946 }, "BodyBag": { "type": "byte", @@ -58942,15 +58942,15 @@ }, "X": { "type": "float", - "value": 25.66694831848145 + "value": 25.666948318481445 }, "Y": { "type": "float", - "value": 128.2299194335938 + "value": 128.22991943359375 }, "Z": { "type": "float", - "value": 0.01000165939331055 + "value": 0.010001659393310547 } }, { @@ -59169,7 +59169,7 @@ }, "Y": { "type": "float", - "value": 133.3844146728516 + "value": 133.38441467285156 }, "Z": { "type": "float", @@ -59388,7 +59388,7 @@ }, "X": { "type": "float", - "value": 53.97243499755859 + "value": 53.972434997558594 }, "Y": { "type": "float", @@ -59396,7 +59396,7 @@ }, "Z": { "type": "float", - "value": -0.003780722618103027 + "value": -0.0037807226181030273 } }, { @@ -59615,11 +59615,11 @@ }, "Y": { "type": "float", - "value": 119.0079193115234 + "value": 119.00791931152344 }, "Z": { "type": "float", - "value": -9.5367431640625e-007 + "value": -0.00000095367431640625 } }, { @@ -59834,15 +59834,15 @@ }, "X": { "type": "float", - "value": 36.87615585327148 + "value": 36.876155853271484 }, "Y": { "type": "float", - "value": 142.5303039550781 + "value": 142.53030395507812 }, "Z": { "type": "float", - "value": 0.01000165939331055 + "value": 0.010001659393310547 } }, { @@ -60057,15 +60057,15 @@ }, "X": { "type": "float", - "value": 17.77742385864258 + "value": 17.777423858642578 }, "Y": { "type": "float", - "value": 128.0951538085938 + "value": 128.09515380859375 }, "Z": { "type": "float", - "value": 9.298324584960938e-006 + "value": 0.000009298324584960938 } }, { @@ -60280,15 +60280,15 @@ }, "X": { "type": "float", - "value": 23.41061401367188 + "value": 23.410614013671875 }, "Y": { "type": "float", - "value": 107.5759811401367 + "value": 107.57598114013672 }, "Z": { "type": "float", - "value": 9.298324584960938e-006 + "value": 0.000009298324584960938 } }, { @@ -60730,11 +60730,11 @@ }, "Y": { "type": "float", - "value": 140.4960021972656 + "value": 140.49600219726562 }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -60753,7 +60753,7 @@ }, "Bearing": { "type": "float", - "value": -0.2945242524147034 + "value": -0.29452425241470337 }, "BodyBag": { "type": "byte", @@ -60949,7 +60949,7 @@ }, "X": { "type": "float", - "value": 33.62917327880859 + "value": 33.629173278808594 }, "Y": { "type": "float", @@ -60957,7 +60957,7 @@ }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -61176,11 +61176,11 @@ }, "Y": { "type": "float", - "value": 132.2438659667969 + "value": 132.24386596679688 }, "Z": { "type": "float", - "value": 0.01000165939331055 + "value": 0.010001659393310547 } }, { @@ -61199,7 +61199,7 @@ }, "Bearing": { "type": "float", - "value": 0.3436115682125092 + "value": 0.34361156821250916 }, "BodyBag": { "type": "byte", @@ -61395,15 +61395,15 @@ }, "X": { "type": "float", - "value": 33.37674713134766 + "value": 33.376747131347656 }, "Y": { "type": "float", - "value": 137.0503540039063 + "value": 137.05035400390625 }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -61622,11 +61622,11 @@ }, "Y": { "type": "float", - "value": 139.4164886474609 + "value": 139.41648864746094 }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -61645,7 +61645,7 @@ }, "Bearing": { "type": "float", - "value": 0.2454366981983185 + "value": 0.24543669819831848 }, "BodyBag": { "type": "byte", @@ -61849,7 +61849,7 @@ }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -61868,7 +61868,7 @@ }, "Bearing": { "type": "float", - "value": 0.196348711848259 + "value": 0.19634871184825897 }, "BodyBag": { "type": "byte", @@ -62068,11 +62068,11 @@ }, "Y": { "type": "float", - "value": 135.2840423583984 + "value": 135.28404235839844 }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -62287,15 +62287,15 @@ }, "X": { "type": "float", - "value": 36.83752822875977 + "value": 36.837528228759766 }, "Y": { "type": "float", - "value": 144.3403472900391 + "value": 144.34034729003906 }, "Z": { "type": "float", - "value": 9.298324584960938e-006 + "value": 0.000009298324584960938 } }, { @@ -62510,7 +62510,7 @@ }, "X": { "type": "float", - "value": 20.8008918762207 + "value": 20.800891876220703 }, "Y": { "type": "float", @@ -62518,7 +62518,7 @@ }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -62537,7 +62537,7 @@ }, "Bearing": { "type": "float", - "value": 0.4417861104011536 + "value": 0.44178611040115356 }, "BodyBag": { "type": "byte", @@ -62741,7 +62741,7 @@ }, "Z": { "type": "float", - "value": -0.002442419528961182 + "value": -0.0024424195289611816 } }, { @@ -62960,11 +62960,11 @@ }, "Y": { "type": "float", - "value": 100.4893264770508 + "value": 100.48932647705078 }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -63183,11 +63183,11 @@ }, "Y": { "type": "float", - "value": 105.0467681884766 + "value": 105.04676818847656 }, "Z": { "type": "float", - "value": -2.342462539672852e-005 + "value": -0.000023424625396728516 } }, { @@ -63406,11 +63406,11 @@ }, "Y": { "type": "float", - "value": 107.5942916870117 + "value": 107.59429168701172 }, "Z": { "type": "float", - "value": 9.298324584960938e-006 + "value": 0.000009298324584960938 } }, { @@ -63429,7 +63429,7 @@ }, "Bearing": { "type": "float", - "value": 1.079922437667847 + "value": 1.0799224376678467 }, "BodyBag": { "type": "byte", @@ -63625,15 +63625,15 @@ }, "X": { "type": "float", - "value": 36.56034088134766 + "value": 36.560340881347656 }, "Y": { "type": "float", - "value": 119.1180877685547 + "value": 119.11808776855469 }, "Z": { "type": "float", - "value": -1.109206438064575 + "value": -1.1092064380645752 } }, { @@ -63652,7 +63652,7 @@ }, "Bearing": { "type": "float", - "value": -2.503453731536865 + "value": -2.5034537315368652 }, "BodyBag": { "type": "byte", @@ -63848,11 +63848,11 @@ }, "X": { "type": "float", - "value": 33.11822891235352 + "value": 33.118228912353516 }, "Y": { "type": "float", - "value": 126.0259094238281 + "value": 126.02590942382812 }, "Z": { "type": "float", @@ -63875,7 +63875,7 @@ }, "Bearing": { "type": "float", - "value": 1.619882822036743 + "value": 1.6198828220367432 }, "BodyBag": { "type": "byte", @@ -64071,7 +64071,7 @@ }, "X": { "type": "float", - "value": 43.47838973999023 + "value": 43.478389739990234 }, "Y": { "type": "float", @@ -64098,7 +64098,7 @@ }, "Bearing": { "type": "float", - "value": 1.570794224739075 + "value": 1.5707942247390747 }, "BodyBag": { "type": "byte", @@ -64298,7 +64298,7 @@ }, "Y": { "type": "float", - "value": 137.3257904052734 + "value": 137.32579040527344 }, "Z": { "type": "float", @@ -64521,11 +64521,11 @@ }, "Y": { "type": "float", - "value": 28.00368690490723 + "value": 28.003686904907227 }, "Z": { "type": "float", - "value": 0.01000165939331055 + "value": 0.010001659393310547 } }, { @@ -64544,7 +64544,7 @@ }, "Bearing": { "type": "float", - "value": 0.3926971256732941 + "value": 0.39269712567329407 }, "BodyBag": { "type": "byte", @@ -64744,11 +64744,11 @@ }, "Y": { "type": "float", - "value": 31.12440490722656 + "value": 31.124404907226562 }, "Z": { "type": "float", - "value": 0.01000165939331055 + "value": 0.010001659393310547 } }, { @@ -64963,7 +64963,7 @@ }, "X": { "type": "float", - "value": 34.31862640380859 + "value": 34.318626403808594 }, "Y": { "type": "float", @@ -65194,7 +65194,7 @@ }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -65413,11 +65413,11 @@ }, "Y": { "type": "float", - "value": 29.97928428649902 + "value": 29.979284286499023 }, "Z": { "type": "float", - "value": 0.01000165939331055 + "value": 0.010001659393310547 } }, { @@ -65640,7 +65640,7 @@ }, "Z": { "type": "float", - "value": 0.01000165939331055 + "value": 0.010001659393310547 } }, { @@ -65659,7 +65659,7 @@ }, "Bearing": { "type": "float", - "value": -1.276271224021912 + "value": -1.2762712240219116 }, "BodyBag": { "type": "byte", @@ -65863,7 +65863,7 @@ }, "Z": { "type": "float", - "value": 0.01000001281499863 + "value": 0.010000012814998627 } }, { @@ -65882,7 +65882,7 @@ }, "Bearing": { "type": "float", - "value": 1.227183341979981 + "value": 1.2271833419799805 }, "BodyBag": { "type": "byte", @@ -66078,15 +66078,15 @@ }, "X": { "type": "float", - "value": 35.12264251708984 + "value": 35.122642517089844 }, "Y": { "type": "float", - "value": 34.14812850952148 + "value": 34.148128509521484 }, "Z": { "type": "float", - "value": 0.01000165939331055 + "value": 0.010001659393310547 } }, { @@ -66309,7 +66309,7 @@ }, "Z": { "type": "float", - "value": 0.01000165939331055 + "value": 0.010001659393310547 } }, { @@ -66328,7 +66328,7 @@ }, "Bearing": { "type": "float", - "value": 1.619882822036743 + "value": 1.6198828220367432 }, "BodyBag": { "type": "byte", @@ -66528,11 +66528,11 @@ }, "Y": { "type": "float", - "value": 27.42623901367188 + "value": 27.426239013671875 }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -66755,7 +66755,7 @@ }, "Z": { "type": "float", - "value": 0.01000165939331055 + "value": 0.010001659393310547 } }, { @@ -66774,7 +66774,7 @@ }, "Bearing": { "type": "float", - "value": -1.570794224739075 + "value": -1.5707942247390747 }, "BodyBag": { "type": "byte", @@ -66978,7 +66978,7 @@ }, "Z": { "type": "float", - "value": 0.009999942965805531 + "value": 0.00999994296580553 } }, { @@ -66997,7 +66997,7 @@ }, "Bearing": { "type": "float", - "value": 2.552533388137817 + "value": 2.5525333881378174 }, "BodyBag": { "type": "byte", @@ -67193,15 +67193,15 @@ }, "X": { "type": "float", - "value": 10.61564636230469 + "value": 10.615646362304688 }, "Y": { "type": "float", - "value": 78.15322875976563 + "value": 78.15322875976562 }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -67220,7 +67220,7 @@ }, "Bearing": { "type": "float", - "value": 1.570794224739075 + "value": 1.5707942247390747 }, "BodyBag": { "type": "byte", @@ -67424,7 +67424,7 @@ }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -67443,7 +67443,7 @@ }, "Bearing": { "type": "float", - "value": 1.570794224739075 + "value": 1.5707942247390747 }, "BodyBag": { "type": "byte", @@ -67647,7 +67647,7 @@ }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -67866,11 +67866,11 @@ }, "Y": { "type": "float", - "value": 40.81997680664063 + "value": 40.819976806640625 }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -67889,7 +67889,7 @@ }, "Bearing": { "type": "float", - "value": 0.3926971256732941 + "value": 0.39269712567329407 }, "BodyBag": { "type": "byte", @@ -68085,7 +68085,7 @@ }, "X": { "type": "float", - "value": 24.09255409240723 + "value": 24.092554092407227 }, "Y": { "type": "float", @@ -68093,7 +68093,7 @@ }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -68308,15 +68308,15 @@ }, "X": { "type": "float", - "value": 8.420359611511231 + "value": 8.42035961151123 }, "Y": { "type": "float", - "value": 41.13259887695313 + "value": 41.132598876953125 }, "Z": { "type": "float", - "value": 0.001895427703857422 + "value": 0.0018954277038574219 } }, { @@ -68531,7 +68531,7 @@ }, "X": { "type": "float", - "value": 20.8051643371582 + "value": 20.805164337158203 }, "Y": { "type": "float", @@ -68539,7 +68539,7 @@ }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -68758,11 +68758,11 @@ }, "Y": { "type": "float", - "value": 14.15166091918945 + "value": 14.151660919189453 }, "Z": { "type": "float", - "value": 9.298324584960938e-006 + "value": 0.000009298324584960938 } }, { @@ -68781,7 +68781,7 @@ }, "Bearing": { "type": "float", - "value": 1.276271224021912 + "value": 1.2762712240219116 }, "BodyBag": { "type": "byte", @@ -68981,11 +68981,11 @@ }, "Y": { "type": "float", - "value": 28.93650054931641 + "value": 28.936500549316406 }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -69004,7 +69004,7 @@ }, "Bearing": { "type": "float", - "value": -1.276271224021912 + "value": -1.2762712240219116 }, "BodyBag": { "type": "byte", @@ -69208,7 +69208,7 @@ }, "Z": { "type": "float", - "value": 9.775161743164063e-006 + "value": 0.000009775161743164062 } }, { @@ -69227,7 +69227,7 @@ }, "Bearing": { "type": "float", - "value": -1.374445199966431 + "value": -1.3744451999664307 }, "BodyBag": { "type": "byte", @@ -69427,11 +69427,11 @@ }, "Y": { "type": "float", - "value": 30.7329216003418 + "value": 30.732921600341797 }, "Z": { "type": "float", - "value": 0.00489342212677002 + "value": 0.0048934221267700195 } }, { @@ -69650,11 +69650,11 @@ }, "Y": { "type": "float", - "value": 29.75541305541992 + "value": 29.755413055419922 }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -69673,7 +69673,7 @@ }, "Bearing": { "type": "float", - "value": 1.079922437667847 + "value": 1.0799224376678467 }, "BodyBag": { "type": "byte", @@ -69877,7 +69877,7 @@ }, "Z": { "type": "float", - "value": 9.775161743164063e-006 + "value": 0.000009775161743164062 } }, { @@ -70096,11 +70096,11 @@ }, "Y": { "type": "float", - "value": 120.1926727294922 + "value": 120.19267272949219 }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -70315,15 +70315,15 @@ }, "X": { "type": "float", - "value": 39.70291900634766 + "value": 39.702919006347656 }, "Y": { "type": "float", - "value": 117.3448333740234 + "value": 117.34483337402344 }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -70546,7 +70546,7 @@ }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -70761,15 +70761,15 @@ }, "X": { "type": "float", - "value": 20.88427352905273 + "value": 20.884273529052734 }, "Y": { "type": "float", - "value": 135.7256469726563 + "value": 135.72564697265625 }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -70988,11 +70988,11 @@ }, "Y": { "type": "float", - "value": 127.7639541625977 + "value": 127.76395416259766 }, "Z": { "type": "float", - "value": -0.1525497436523438 + "value": -0.15254974365234375 } }, { @@ -71011,7 +71011,7 @@ }, "Bearing": { "type": "float", - "value": 0.3436115682125092 + "value": 0.34361156821250916 }, "BodyBag": { "type": "byte", @@ -71207,11 +71207,11 @@ }, "X": { "type": "float", - "value": 63.67684936523438 + "value": 63.676849365234375 }, "Y": { "type": "float", - "value": 127.2537994384766 + "value": 127.25379943847656 }, "Z": { "type": "float", @@ -71430,15 +71430,15 @@ }, "X": { "type": "float", - "value": 51.71450042724609 + "value": 51.714500427246094 }, "Y": { "type": "float", - "value": 117.7112350463867 + "value": 117.71123504638672 }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -71457,7 +71457,7 @@ }, "Bearing": { "type": "float", - "value": 0.4417861104011536 + "value": 0.44178611040115356 }, "BodyBag": { "type": "byte", @@ -71657,11 +71657,11 @@ }, "Y": { "type": "float", - "value": 109.7686309814453 + "value": 109.76863098144531 }, "Z": { "type": "float", - "value": -0.003789305686950684 + "value": -0.0037893056869506836 } }, { @@ -71876,7 +71876,7 @@ }, "X": { "type": "float", - "value": 18.89922714233398 + "value": 18.899227142333984 }, "Y": { "type": "float", @@ -71884,7 +71884,7 @@ }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -72099,15 +72099,15 @@ }, "X": { "type": "float", - "value": 37.28420257568359 + "value": 37.284202575683594 }, "Y": { "type": "float", - "value": 100.6299133300781 + "value": 100.62991333007812 }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -72326,11 +72326,11 @@ }, "Y": { "type": "float", - "value": 112.3649978637695 + "value": 112.36499786376953 }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -72549,11 +72549,11 @@ }, "Y": { "type": "float", - "value": 116.7726745605469 + "value": 116.77267456054688 }, "Z": { "type": "float", - "value": -0.003780722618103027 + "value": -0.0037807226181030273 } }, { @@ -72768,7 +72768,7 @@ }, "X": { "type": "float", - "value": 31.29335975646973 + "value": 31.293359756469727 }, "Y": { "type": "float", @@ -72776,7 +72776,7 @@ }, "Z": { "type": "float", - "value": 1.001358032226563e-005 + "value": 0.000010013580322265625 } }, { @@ -72999,7 +72999,7 @@ }, "Z": { "type": "float", - "value": 1.001358032226563e-005 + "value": 0.000010013580322265625 } }, { @@ -73214,7 +73214,7 @@ }, "X": { "type": "float", - "value": 64.93515777587891 + "value": 64.9351577758789 }, "Y": { "type": "float", @@ -73222,7 +73222,7 @@ }, "Z": { "type": "float", - "value": 0.002381324768066406 + "value": 0.0023813247680664062 } }, { @@ -73437,11 +73437,11 @@ }, "X": { "type": "float", - "value": 23.34593772888184 + "value": 23.345937728881836 }, "Y": { "type": "float", - "value": 109.4774932861328 + "value": 109.47749328613281 }, "Z": { "type": "float", @@ -73660,15 +73660,15 @@ }, "X": { "type": "float", - "value": 59.55631256103516 + "value": 59.556312561035156 }, "Y": { "type": "float", - "value": 145.6900787353516 + "value": 145.69007873535156 }, "Z": { "type": "float", - "value": 0.01000700891017914 + "value": 0.010007008910179138 } }, { @@ -73687,7 +73687,7 @@ }, "Bearing": { "type": "float", - "value": 0.2454366981983185 + "value": 0.24543669819831848 }, "BodyBag": { "type": "byte", @@ -73883,7 +73883,7 @@ }, "X": { "type": "float", - "value": 60.38162994384766 + "value": 60.381629943847656 }, "Y": { "type": "float", @@ -73891,7 +73891,7 @@ }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -74114,7 +74114,7 @@ }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -74133,7 +74133,7 @@ }, "Bearing": { "type": "float", - "value": 0.3926971256732941 + "value": 0.39269712567329407 }, "BodyBag": { "type": "byte", @@ -74329,7 +74329,7 @@ }, "X": { "type": "float", - "value": 58.74747467041016 + "value": 58.747474670410156 }, "Y": { "type": "float", @@ -74337,7 +74337,7 @@ }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -74356,7 +74356,7 @@ }, "Bearing": { "type": "float", - "value": 0.3436115682125092 + "value": 0.34361156821250916 }, "BodyBag": { "type": "byte", @@ -74552,7 +74552,7 @@ }, "X": { "type": "float", - "value": 82.96579742431641 + "value": 82.9657974243164 }, "Y": { "type": "float", @@ -74560,7 +74560,7 @@ }, "Z": { "type": "float", - "value": -0.1140646934509277 + "value": -0.11406469345092773 } }, { @@ -74779,11 +74779,11 @@ }, "Y": { "type": "float", - "value": 145.5527648925781 + "value": 145.55276489257812 }, "Z": { "type": "float", - "value": 0.01000011060386896 + "value": 0.010000110603868961 } }, { @@ -75006,7 +75006,7 @@ }, "Z": { "type": "float", - "value": 0.01000165939331055 + "value": 0.010001659393310547 } }, { @@ -75025,7 +75025,7 @@ }, "Bearing": { "type": "float", - "value": -0.2454366981983185 + "value": -0.24543669819831848 }, "BodyBag": { "type": "byte", @@ -75221,7 +75221,7 @@ }, "X": { "type": "float", - "value": 51.08648300170898 + "value": 51.086483001708984 }, "Y": { "type": "float", @@ -75452,7 +75452,7 @@ }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -75667,11 +75667,11 @@ }, "X": { "type": "float", - "value": 20.03184509277344 + "value": 20.031845092773438 }, "Y": { "type": "float", - "value": 128.6945495605469 + "value": 128.69454956054688 }, "Z": { "type": "float", @@ -75898,7 +75898,7 @@ }, "Z": { "type": "float", - "value": 0.01000165939331055 + "value": 0.010001659393310547 } }, { @@ -76113,7 +76113,7 @@ }, "X": { "type": "float", - "value": 40.76015472412109 + "value": 40.760154724121094 }, "Y": { "type": "float", @@ -76121,7 +76121,7 @@ }, "Z": { "type": "float", - "value": -0.003780722618103027 + "value": -0.0037807226181030273 } }, { @@ -76336,15 +76336,15 @@ }, "X": { "type": "float", - "value": 55.22617340087891 + "value": 55.226173400878906 }, "Y": { "type": "float", - "value": 116.1359558105469 + "value": 116.13595581054688 }, "Z": { "type": "float", - "value": 1.9073486328125e-006 + "value": 0.0000019073486328125 } }, { @@ -76363,7 +76363,7 @@ }, "Bearing": { "type": "float", - "value": -1.816225171089172 + "value": -1.8162251710891724 }, "BodyBag": { "type": "byte", @@ -76563,11 +76563,11 @@ }, "Y": { "type": "float", - "value": 115.2461700439453 + "value": 115.24617004394531 }, "Z": { "type": "float", - "value": -2.384185791015625e-007 + "value": -0.0000002384185791015625 } }, { @@ -77009,11 +77009,11 @@ }, "Y": { "type": "float", - "value": 10.38484764099121 + "value": 10.384847640991211 }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -77032,7 +77032,7 @@ }, "Bearing": { "type": "float", - "value": 1.3253573179245 + "value": 1.3253573179244995 }, "BodyBag": { "type": "byte", @@ -77228,15 +77228,15 @@ }, "X": { "type": "float", - "value": 10.13125801086426 + "value": 10.131258010864258 }, "Y": { "type": "float", - "value": 101.1792526245117 + "value": 101.17925262451172 }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -77255,7 +77255,7 @@ }, "Bearing": { "type": "float", - "value": 2.503453731536865 + "value": 2.5034537315368652 }, "BodyBag": { "type": "byte", @@ -77459,7 +77459,7 @@ }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -77478,7 +77478,7 @@ }, "Bearing": { "type": "float", - "value": 0.2945242524147034 + "value": 0.29452425241470337 }, "BodyBag": { "type": "byte", @@ -77674,15 +77674,15 @@ }, "X": { "type": "float", - "value": 129.7588500976563 + "value": 129.75885009765625 }, "Y": { "type": "float", - "value": 40.60001373291016 + "value": 40.600013732910156 }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -77701,7 +77701,7 @@ }, "Bearing": { "type": "float", - "value": 0.2945242524147034 + "value": 0.29452425241470337 }, "BodyBag": { "type": "byte", @@ -77905,7 +77905,7 @@ }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -78120,7 +78120,7 @@ }, "X": { "type": "float", - "value": 102.7062149047852 + "value": 102.70621490478516 }, "Y": { "type": "float", @@ -78128,7 +78128,7 @@ }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -78343,15 +78343,15 @@ }, "X": { "type": "float", - "value": 100.0647735595703 + "value": 100.06477355957031 }, "Y": { "type": "float", - "value": 22.77055740356445 + "value": 22.770557403564453 }, "Z": { "type": "float", - "value": 0.01000165939331055 + "value": 0.010001659393310547 } }, { @@ -78574,7 +78574,7 @@ }, "Z": { "type": "float", - "value": 9.894371032714844e-006 + "value": 0.000009894371032714844 } }, { @@ -78793,11 +78793,11 @@ }, "Y": { "type": "float", - "value": 17.00947952270508 + "value": 17.009479522705078 }, "Z": { "type": "float", - "value": 9.894371032714844e-006 + "value": 0.000009894371032714844 } }, { @@ -79012,7 +79012,7 @@ }, "X": { "type": "float", - "value": 103.3508605957031 + "value": 103.35086059570312 }, "Y": { "type": "float", @@ -79020,7 +79020,7 @@ }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -79235,15 +79235,15 @@ }, "X": { "type": "float", - "value": 119.0685577392578 + "value": 119.06855773925781 }, "Y": { "type": "float", - "value": 145.1944427490234 + "value": 145.19444274902344 }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -79458,15 +79458,15 @@ }, "X": { "type": "float", - "value": 112.1334533691406 + "value": 112.13345336914062 }, "Y": { "type": "float", - "value": 142.2333679199219 + "value": 142.23336791992188 }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -79685,11 +79685,11 @@ }, "Y": { "type": "float", - "value": 108.4945373535156 + "value": 108.49453735351562 }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -79904,15 +79904,15 @@ }, "X": { "type": "float", - "value": 179.8980407714844 + "value": 179.89804077148438 }, "Y": { "type": "float", - "value": 111.1711883544922 + "value": 111.17118835449219 }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -79931,7 +79931,7 @@ }, "Bearing": { "type": "float", - "value": 0.2454366981983185 + "value": 0.24543669819831848 }, "BodyBag": { "type": "byte", @@ -80127,15 +80127,15 @@ }, "X": { "type": "float", - "value": 150.3215026855469 + "value": 150.32150268554688 }, "Y": { "type": "float", - "value": 100.8397064208984 + "value": 100.83970642089844 }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -80354,11 +80354,11 @@ }, "Y": { "type": "float", - "value": 119.871223449707 + "value": 119.87122344970703 }, "Z": { "type": "float", - "value": 9.298324584960938e-006 + "value": 0.000009298324584960938 } }, { @@ -80573,15 +80573,15 @@ }, "X": { "type": "float", - "value": 146.1376800537109 + "value": 146.13768005371094 }, "Y": { "type": "float", - "value": 48.67712020874023 + "value": 48.677120208740234 }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -80796,7 +80796,7 @@ }, "X": { "type": "float", - "value": 151.1004028320313 + "value": 151.10040283203125 }, "Y": { "type": "float", @@ -80804,7 +80804,7 @@ }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -81019,7 +81019,7 @@ }, "X": { "type": "float", - "value": 147.0520935058594 + "value": 147.05209350585938 }, "Y": { "type": "float", @@ -81027,7 +81027,7 @@ }, "Z": { "type": "float", - "value": 1.001358032226563e-005 + "value": 0.000010013580322265625 } }, { @@ -81046,7 +81046,7 @@ }, "Bearing": { "type": "float", - "value": 0.3436115682125092 + "value": 0.34361156821250916 }, "BodyBag": { "type": "byte", @@ -81250,7 +81250,7 @@ }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -81465,7 +81465,7 @@ }, "X": { "type": "float", - "value": 146.5397644042969 + "value": 146.53976440429688 }, "Y": { "type": "float", @@ -81473,7 +81473,7 @@ }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -81696,7 +81696,7 @@ }, "Z": { "type": "float", - "value": 0.01000165939331055 + "value": 0.010001659393310547 } }, { @@ -81938,7 +81938,7 @@ }, "Bearing": { "type": "float", - "value": 0.2454366981983185 + "value": 0.24543669819831848 }, "BodyBag": { "type": "byte", @@ -82134,7 +82134,7 @@ }, "X": { "type": "float", - "value": 207.1589660644531 + "value": 207.15896606445312 }, "Y": { "type": "float", @@ -82161,7 +82161,7 @@ }, "Bearing": { "type": "float", - "value": 0.2454366981983185 + "value": 0.24543669819831848 }, "BodyBag": { "type": "byte", @@ -82365,7 +82365,7 @@ }, "Z": { "type": "float", - "value": 0.01000165939331055 + "value": 0.010001659393310547 } }, { @@ -82384,7 +82384,7 @@ }, "Bearing": { "type": "float", - "value": 0.4417861104011536 + "value": 0.44178611040115356 }, "BodyBag": { "type": "byte", @@ -82588,7 +82588,7 @@ }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -82607,7 +82607,7 @@ }, "Bearing": { "type": "float", - "value": 0.4417861104011536 + "value": 0.44178611040115356 }, "BodyBag": { "type": "byte", @@ -82803,7 +82803,7 @@ }, "X": { "type": "float", - "value": 229.4927825927734 + "value": 229.49278259277344 }, "Y": { "type": "float", @@ -82830,7 +82830,7 @@ }, "Bearing": { "type": "float", - "value": -0.3926971256732941 + "value": -0.39269712567329407 }, "BodyBag": { "type": "byte", @@ -83053,7 +83053,7 @@ }, "Bearing": { "type": "float", - "value": 0.196348711848259 + "value": 0.19634871184825897 }, "BodyBag": { "type": "byte", @@ -83249,11 +83249,11 @@ }, "X": { "type": "float", - "value": 250.2451019287109 + "value": 250.24510192871094 }, "Y": { "type": "float", - "value": 128.0721588134766 + "value": 128.07215881347656 }, "Z": { "type": "float", @@ -83276,7 +83276,7 @@ }, "Bearing": { "type": "float", - "value": 1.374445199966431 + "value": 1.3744451999664307 }, "BodyBag": { "type": "byte", @@ -83472,15 +83472,15 @@ }, "X": { "type": "float", - "value": 127.5114288330078 + "value": 127.51142883300781 }, "Y": { "type": "float", - "value": 29.76720809936523 + "value": 29.767208099365234 }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -83499,7 +83499,7 @@ }, "Bearing": { "type": "float", - "value": 1.521707773208618 + "value": 1.5217077732086182 }, "BodyBag": { "type": "byte", @@ -83695,15 +83695,15 @@ }, "X": { "type": "float", - "value": 127.6324996948242 + "value": 127.63249969482422 }, "Y": { "type": "float", - "value": 30.82102584838867 + "value": 30.821025848388672 }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -83722,7 +83722,7 @@ }, "Bearing": { "type": "float", - "value": 1.227183341979981 + "value": 1.2271833419799805 }, "BodyBag": { "type": "byte", @@ -83918,15 +83918,15 @@ }, "X": { "type": "float", - "value": 125.2828826904297 + "value": 125.28288269042969 }, "Y": { "type": "float", - "value": 30.02383422851563 + "value": 30.023834228515625 }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -83945,7 +83945,7 @@ }, "Bearing": { "type": "float", - "value": 0.2945242524147034 + "value": 0.29452425241470337 }, "BodyBag": { "type": "byte", @@ -84149,7 +84149,7 @@ }, "Z": { "type": "float", - "value": -0.002665519714355469 + "value": -0.0026655197143554688 } }, { @@ -84364,15 +84364,15 @@ }, "X": { "type": "float", - "value": 178.7314300537109 + "value": 178.73143005371094 }, "Y": { "type": "float", - "value": 10.13959884643555 + "value": 10.139598846435547 }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -84391,7 +84391,7 @@ }, "Bearing": { "type": "float", - "value": 0.196348711848259 + "value": 0.19634871184825897 }, "BodyBag": { "type": "byte", @@ -84587,7 +84587,7 @@ }, "X": { "type": "float", - "value": 259.2041625976563 + "value": 259.20416259765625 }, "Y": { "type": "float", @@ -85260,7 +85260,7 @@ }, "Y": { "type": "float", - "value": 102.9981155395508 + "value": 102.99811553955078 }, "Z": { "type": "float", @@ -85479,7 +85479,7 @@ }, "X": { "type": "float", - "value": 35.64572906494141 + "value": 35.645729064941406 }, "Y": { "type": "float", @@ -85487,7 +85487,7 @@ }, "Z": { "type": "float", - "value": 9.298324584960938e-006 + "value": 0.000009298324584960938 } }, { @@ -85708,7 +85708,7 @@ }, "Y": { "type": "float", - "value": 143.4720764160156 + "value": 143.47207641601562 }, "Z": { "type": "float", @@ -86158,7 +86158,7 @@ }, "Y": { "type": "float", - "value": 139.7068023681641 + "value": 139.70680236816406 }, "Z": { "type": "float", @@ -86608,7 +86608,7 @@ }, "Y": { "type": "float", - "value": 142.0752258300781 + "value": 142.07522583007812 }, "Z": { "type": "float", @@ -86833,7 +86833,7 @@ }, "Y": { "type": "float", - "value": 146.0300445556641 + "value": 146.03004455566406 }, "Z": { "type": "float", @@ -86856,7 +86856,7 @@ }, "Bearing": { "type": "float", - "value": 1.030834794044495 + "value": 1.0308347940444946 }, "BodyBag": { "type": "byte", @@ -87283,7 +87283,7 @@ }, "Y": { "type": "float", - "value": 139.0298919677734 + "value": 139.02989196777344 }, "Z": { "type": "float", @@ -87306,7 +87306,7 @@ }, "Bearing": { "type": "float", - "value": 1.178097248077393 + "value": 1.1780972480773926 }, "BodyBag": { "type": "byte", @@ -87529,7 +87529,7 @@ }, "Bearing": { "type": "float", - "value": 2.552533388137817 + "value": 2.5525333881378174 }, "BodyBag": { "type": "byte", @@ -87729,7 +87729,7 @@ }, "Y": { "type": "float", - "value": 11.14416122436523 + "value": 11.144161224365234 }, "Z": { "type": "float", @@ -87975,7 +87975,7 @@ }, "Bearing": { "type": "float", - "value": 0.2454366981983185 + "value": 0.24543669819831848 }, "BodyBag": { "type": "byte", @@ -88175,7 +88175,7 @@ }, "Y": { "type": "float", - "value": 10.86101531982422 + "value": 10.861015319824219 }, "Z": { "type": "float", @@ -88398,7 +88398,7 @@ }, "Y": { "type": "float", - "value": 15.06780815124512 + "value": 15.067808151245117 }, "Z": { "type": "float", @@ -88617,7 +88617,7 @@ }, "X": { "type": "float", - "value": 311.7852172851563 + "value": 311.78521728515625 }, "Y": { "type": "float", @@ -88840,11 +88840,11 @@ }, "X": { "type": "float", - "value": 307.3609008789063 + "value": 307.36090087890625 }, "Y": { "type": "float", - "value": 9.119480133056641 + "value": 9.11948013305664 }, "Z": { "type": "float", @@ -89090,7 +89090,7 @@ }, "Bearing": { "type": "float", - "value": 0.2454366981983185 + "value": 0.24543669819831848 }, "BodyBag": { "type": "byte", @@ -89286,11 +89286,11 @@ }, "X": { "type": "float", - "value": 283.2047729492188 + "value": 283.20477294921875 }, "Y": { "type": "float", - "value": 21.98899078369141 + "value": 21.988990783691406 }, "Z": { "type": "float", @@ -89509,11 +89509,11 @@ }, "X": { "type": "float", - "value": 301.4441528320313 + "value": 301.44415283203125 }, "Y": { "type": "float", - "value": 13.53081321716309 + "value": 13.530813217163086 }, "Z": { "type": "float", @@ -89536,7 +89536,7 @@ }, "Bearing": { "type": "float", - "value": 1.42353367805481 + "value": 1.4235336780548096 }, "BodyBag": { "type": "byte", @@ -89732,11 +89732,11 @@ }, "X": { "type": "float", - "value": 303.7593383789063 + "value": 303.75933837890625 }, "Y": { "type": "float", - "value": 10.8753137588501 + "value": 10.875313758850098 }, "Z": { "type": "float", @@ -89759,7 +89759,7 @@ }, "Bearing": { "type": "float", - "value": 2.061669826507568 + "value": 2.0616698265075684 }, "BodyBag": { "type": "byte", @@ -89982,7 +89982,7 @@ }, "Bearing": { "type": "float", - "value": 0.3436115682125092 + "value": 0.34361156821250916 }, "BodyBag": { "type": "byte", @@ -90205,7 +90205,7 @@ }, "Bearing": { "type": "float", - "value": 1.276271224021912 + "value": 1.2762712240219116 }, "BodyBag": { "type": "byte", @@ -90401,11 +90401,11 @@ }, "X": { "type": "float", - "value": 302.4196166992188 + "value": 302.41961669921875 }, "Y": { "type": "float", - "value": 31.36060523986816 + "value": 31.360605239868164 }, "Z": { "type": "float", @@ -90653,7 +90653,7 @@ }, "Bearing": { "type": "float", - "value": -2.65070390701294 + "value": -2.6507039070129395 }, "BodyBag": { "type": "byte", @@ -90855,7 +90855,7 @@ }, "Y": { "type": "float", - "value": 19.35652923583984 + "value": 19.356529235839844 }, "Z": { "type": "float", @@ -90878,7 +90878,7 @@ }, "Bearing": { "type": "float", - "value": 2.601631164550781 + "value": 2.6016311645507812 }, "BodyBag": { "type": "byte", @@ -91076,7 +91076,7 @@ }, "X": { "type": "float", - "value": 310.0845336914063 + "value": 310.08453369140625 }, "Y": { "type": "float", @@ -91103,7 +91103,7 @@ }, "Bearing": { "type": "float", - "value": -2.89606237411499 + "value": -2.8960623741149902 }, "BodyBag": { "type": "byte", @@ -91326,7 +91326,7 @@ }, "Bearing": { "type": "float", - "value": 1.079922437667847 + "value": 1.0799224376678467 }, "BodyBag": { "type": "byte", @@ -91522,7 +91522,7 @@ }, "X": { "type": "float", - "value": 234.0573883056641 + "value": 234.05738830566406 }, "Y": { "type": "float", @@ -91530,7 +91530,7 @@ }, "Z": { "type": "float", - "value": 1.001358032226563e-005 + "value": 0.000010013580322265625 } }, { @@ -91749,11 +91749,11 @@ }, "Y": { "type": "float", - "value": 80.95261383056641 + "value": 80.9526138305664 }, "Z": { "type": "float", - "value": 0.01000165939331055 + "value": 0.010001659393310547 } }, { @@ -91772,7 +91772,7 @@ }, "Bearing": { "type": "float", - "value": 0.4417861104011536 + "value": 0.44178611040115356 }, "BodyBag": { "type": "byte", @@ -91968,15 +91968,15 @@ }, "X": { "type": "float", - "value": 232.0097808837891 + "value": 232.00978088378906 }, "Y": { "type": "float", - "value": 86.88748168945313 + "value": 86.88748168945312 }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -92418,7 +92418,7 @@ }, "Y": { "type": "float", - "value": 148.9718170166016 + "value": 148.97181701660156 }, "Z": { "type": "float", @@ -92441,7 +92441,7 @@ }, "Bearing": { "type": "float", - "value": 0.2945242524147034 + "value": 0.29452425241470337 }, "BodyBag": { "type": "byte", @@ -92864,7 +92864,7 @@ }, "Y": { "type": "float", - "value": 152.2517700195313 + "value": 152.25177001953125 }, "Z": { "type": "float", @@ -92887,7 +92887,7 @@ }, "Bearing": { "type": "float", - "value": 0.2454366981983185 + "value": 0.24543669819831848 }, "BodyBag": { "type": "byte", @@ -93318,7 +93318,7 @@ }, "Z": { "type": "float", - "value": 10.01001167297363 + "value": 10.010011672973633 } }, { @@ -93537,7 +93537,7 @@ }, "Y": { "type": "float", - "value": 152.9147033691406 + "value": 152.91470336914062 }, "Z": { "type": "float", @@ -93760,7 +93760,7 @@ }, "Y": { "type": "float", - "value": 150.2910308837891 + "value": 150.29103088378906 }, "Z": { "type": "float", @@ -93783,7 +93783,7 @@ }, "Bearing": { "type": "float", - "value": 1.521707773208618 + "value": 1.5217077732086182 }, "BodyBag": { "type": "byte", @@ -93985,11 +93985,11 @@ }, "Y": { "type": "float", - "value": 37.81212997436523 + "value": 37.812129974365234 }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -94204,15 +94204,15 @@ }, "X": { "type": "float", - "value": 178.7750549316406 + "value": 178.77505493164062 }, "Y": { "type": "float", - "value": 129.3706970214844 + "value": 129.37069702148438 }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -94431,11 +94431,11 @@ }, "Y": { "type": "float", - "value": 151.4181213378906 + "value": 151.41812133789062 }, "Z": { "type": "float", - "value": 0.01000165939331055 + "value": 0.010001659393310547 } }, { @@ -94650,15 +94650,15 @@ }, "X": { "type": "float", - "value": 174.4414978027344 + "value": 174.44149780273438 }, "Y": { "type": "float", - "value": 123.4368209838867 + "value": 123.43682098388672 }, "Z": { "type": "float", - "value": 9.298324584960938e-006 + "value": 0.000009298324584960938 } }, { @@ -94677,7 +94677,7 @@ }, "Bearing": { "type": "float", - "value": -0.2454366981983185 + "value": -0.24543669819831848 }, "BodyBag": { "type": "byte", @@ -94873,15 +94873,15 @@ }, "X": { "type": "float", - "value": 118.8347854614258 + "value": 118.83478546142578 }, "Y": { "type": "float", - "value": 130.6439361572266 + "value": 130.64393615722656 }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -95100,11 +95100,11 @@ }, "Y": { "type": "float", - "value": 21.65811729431152 + "value": 21.658117294311523 }, "Z": { "type": "float", - "value": 9.775161743164063e-006 + "value": 0.000009775161743164062 } }, { @@ -95319,11 +95319,11 @@ }, "X": { "type": "float", - "value": 63.79770660400391 + "value": 63.797706604003906 }, "Y": { "type": "float", - "value": 22.2380485534668 + "value": 22.238048553466797 }, "Z": { "type": "float", @@ -95550,7 +95550,7 @@ }, "Z": { "type": "float", - "value": 9.775161743164063e-006 + "value": 0.000009775161743164062 } }, { @@ -95773,7 +95773,7 @@ }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -95792,7 +95792,7 @@ }, "Bearing": { "type": "float", - "value": -0.3926971256732941 + "value": -0.39269712567329407 }, "BodyBag": { "type": "byte", @@ -95992,11 +95992,11 @@ }, "Y": { "type": "float", - "value": 18.63210296630859 + "value": 18.632102966308594 }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -96015,7 +96015,7 @@ }, "Bearing": { "type": "float", - "value": 2.061669826507568 + "value": 2.0616698265075684 }, "BodyBag": { "type": "byte", @@ -96213,11 +96213,11 @@ }, "X": { "type": "float", - "value": 304.5944213867188 + "value": 304.59442138671875 }, "Y": { "type": "float", - "value": 12.93317604064941 + "value": 12.933176040649414 }, "Z": { "type": "float", @@ -96440,11 +96440,11 @@ }, "Y": { "type": "float", - "value": 14.85053062438965 + "value": 14.850530624389648 }, "Z": { "type": "float", - "value": 5.778760433197022 + "value": 5.7787604331970215 } }, { @@ -96886,7 +96886,7 @@ }, "X": { "type": "float", - "value": 240.3871002197266 + "value": 240.38710021972656 }, "Y": { "type": "float", @@ -96894,7 +96894,7 @@ }, "Z": { "type": "float", - "value": 0.01000165939331055 + "value": 0.010001659393310547 } }, { @@ -97211,7 +97211,7 @@ }, "X": { "type": "float", - "value": 270.2670288085938 + "value": 270.26702880859375 }, "Y": { "type": "float", @@ -97767,7 +97767,7 @@ }, "Y": { "type": "float", - "value": 20.72265434265137 + "value": 20.722654342651367 }, "Z": { "type": "float", @@ -97790,7 +97790,7 @@ }, "Bearing": { "type": "float", - "value": 0.4417861104011536 + "value": 0.44178611040115356 }, "BodyBag": { "type": "byte", @@ -97988,7 +97988,7 @@ }, "X": { "type": "float", - "value": 311.0761108398438 + "value": 311.07611083984375 }, "Y": { "type": "float", @@ -98215,7 +98215,7 @@ }, "Y": { "type": "float", - "value": 4.730934619903565 + "value": 4.7309346199035645 }, "Z": { "type": "float", @@ -98657,7 +98657,7 @@ }, "X": { "type": "float", - "value": 257.8483276367188 + "value": 257.84832763671875 }, "Y": { "type": "float", @@ -98880,11 +98880,11 @@ }, "X": { "type": "float", - "value": 232.0110015869141 + "value": 232.01100158691406 }, "Y": { "type": "float", - "value": 158.1278228759766 + "value": 158.12782287597656 }, "Z": { "type": "float", @@ -98907,7 +98907,7 @@ }, "Bearing": { "type": "float", - "value": -1.3253573179245 + "value": -1.3253573179244995 }, "BodyBag": { "type": "byte", @@ -99103,11 +99103,11 @@ }, "X": { "type": "float", - "value": 230.1501617431641 + "value": 230.15016174316406 }, "Y": { "type": "float", - "value": 158.7243957519531 + "value": 158.72439575195312 }, "Z": { "type": "float", @@ -99326,11 +99326,11 @@ }, "X": { "type": "float", - "value": 228.2429351806641 + "value": 228.24293518066406 }, "Y": { "type": "float", - "value": 158.4387359619141 + "value": 158.43873596191406 }, "Z": { "type": "float", @@ -99549,7 +99549,7 @@ }, "X": { "type": "float", - "value": 226.2359771728516 + "value": 226.23597717285156 }, "Y": { "type": "float", @@ -99576,7 +99576,7 @@ }, "Bearing": { "type": "float", - "value": -0.2945242524147034 + "value": -0.29452425241470337 }, "BodyBag": { "type": "byte", @@ -99772,7 +99772,7 @@ }, "X": { "type": "float", - "value": 118.3572463989258 + "value": 118.35724639892578 }, "Y": { "type": "float", @@ -99780,7 +99780,7 @@ }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -99799,7 +99799,7 @@ }, "Bearing": { "type": "float", - "value": -1.030834794044495 + "value": -1.0308347940444946 }, "BodyBag": { "type": "byte", @@ -100003,7 +100003,7 @@ }, "Z": { "type": "float", - "value": 0.01000165939331055 + "value": 0.010001659393310547 } }, { @@ -100022,7 +100022,7 @@ }, "Bearing": { "type": "float", - "value": -1.3253573179245 + "value": -1.3253573179244995 }, "BodyBag": { "type": "byte", @@ -100224,11 +100224,11 @@ }, "Y": { "type": "float", - "value": 137.3487701416016 + "value": 137.34877014160156 }, "Z": { "type": "float", - "value": 0.01000165939331055 + "value": 0.010001659393310547 } }, { @@ -100443,7 +100443,7 @@ }, "X": { "type": "float", - "value": 213.7742004394531 + "value": 213.77420043945312 }, "Y": { "type": "float", @@ -100451,7 +100451,7 @@ }, "Z": { "type": "float", - "value": 0.01000165939331055 + "value": 0.010001659393310547 } }, { @@ -100674,7 +100674,7 @@ }, "Z": { "type": "float", - "value": 0.01000165939331055 + "value": 0.010001659393310547 } }, { @@ -100693,7 +100693,7 @@ }, "Bearing": { "type": "float", - "value": 2.208930969238281 + "value": 2.2089309692382812 }, "BodyBag": { "type": "byte", @@ -100889,15 +100889,15 @@ }, "X": { "type": "float", - "value": 216.1677093505859 + "value": 216.16770935058594 }, "Y": { "type": "float", - "value": 133.7726745605469 + "value": 133.77267456054688 }, "Z": { "type": "float", - "value": 0.01000165939331055 + "value": 0.010001659393310547 } }, { @@ -101539,7 +101539,7 @@ }, "X": { "type": "float", - "value": 213.7539978027344 + "value": 213.75399780273438 }, "Y": { "type": "float", @@ -101547,7 +101547,7 @@ }, "Z": { "type": "float", - "value": 0.01000165939331055 + "value": 0.010001659393310547 } }, { @@ -101566,7 +101566,7 @@ }, "Bearing": { "type": "float", - "value": -2.552533388137817 + "value": -2.5525333881378174 }, "BodyBag": { "type": "byte", @@ -102144,15 +102144,15 @@ }, "X": { "type": "float", - "value": 218.8323669433594 + "value": 218.83236694335938 }, "Y": { "type": "float", - "value": 136.4697418212891 + "value": 136.46974182128906 }, "Z": { "type": "float", - "value": 0.01000165939331055 + "value": 0.010001659393310547 } }, { @@ -102759,15 +102759,15 @@ }, "X": { "type": "float", - "value": 211.9242858886719 + "value": 211.92428588867188 }, "Y": { "type": "float", - "value": 33.04166412353516 + "value": 33.041664123535156 }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -102786,7 +102786,7 @@ }, "Bearing": { "type": "float", - "value": 2.994257211685181 + "value": 2.9942572116851807 }, "BodyBag": { "type": "byte", @@ -102992,7 +102992,7 @@ }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -103011,7 +103011,7 @@ }, "Bearing": { "type": "float", - "value": 0.3926971256732941 + "value": 0.39269712567329407 }, "BodyBag": { "type": "byte", @@ -103353,11 +103353,11 @@ }, "Y": { "type": "float", - "value": 66.91477203369141 + "value": 66.9147720336914 }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -103376,7 +103376,7 @@ }, "Bearing": { "type": "float", - "value": 1.227183341979981 + "value": 1.2271833419799805 }, "BodyBag": { "type": "byte", @@ -103714,7 +103714,7 @@ }, "X": { "type": "float", - "value": 210.9005432128906 + "value": 210.90054321289062 }, "Y": { "type": "float", @@ -103722,7 +103722,7 @@ }, "Z": { "type": "float", - "value": 0.01000165939331055 + "value": 0.010001659393310547 } }, { @@ -103945,7 +103945,7 @@ }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -104168,7 +104168,7 @@ }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -104187,7 +104187,7 @@ }, "Bearing": { "type": "float", - "value": -3.043368577957153 + "value": -3.0433685779571533 }, "BodyBag": { "type": "byte", @@ -104389,7 +104389,7 @@ }, "Y": { "type": "float", - "value": 36.25214004516602 + "value": 36.252140045166016 }, "Z": { "type": "float", @@ -104608,11 +104608,11 @@ }, "X": { "type": "float", - "value": 268.3677368164063 + "value": 268.36773681640625 }, "Y": { "type": "float", - "value": 37.16342926025391 + "value": 37.163429260253906 }, "Z": { "type": "float", @@ -104858,7 +104858,7 @@ }, "Bearing": { "type": "float", - "value": -0.2945245802402496 + "value": -0.29452458024024963 }, "BodyBag": { "type": "byte", @@ -105054,7 +105054,7 @@ }, "X": { "type": "float", - "value": 40.06363677978516 + "value": 40.063636779785156 }, "Y": { "type": "float", @@ -105062,7 +105062,7 @@ }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -105081,7 +105081,7 @@ }, "Bearing": { "type": "float", - "value": 2.208919763565064 + "value": 2.2089197635650635 }, "BodyBag": { "type": "byte", @@ -105277,15 +105277,15 @@ }, "X": { "type": "float", - "value": 30.20701599121094 + "value": 30.207015991210938 }, "Y": { "type": "float", - "value": 134.8698120117188 + "value": 134.86981201171875 }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -105304,7 +105304,7 @@ }, "Bearing": { "type": "float", - "value": -0.196348711848259 + "value": -0.19634871184825897 }, "BodyBag": { "type": "byte", @@ -105500,15 +105500,15 @@ }, "X": { "type": "float", - "value": 20.20388793945313 + "value": 20.203887939453125 }, "Y": { "type": "float", - "value": 151.2010192871094 + "value": 151.20101928710938 }, "Z": { "type": "float", - "value": 1.025199890136719e-005 + "value": 0.000010251998901367188 } }, { @@ -105727,11 +105727,11 @@ }, "Y": { "type": "float", - "value": 58.37026214599609 + "value": 58.370262145996094 }, "Z": { "type": "float", - "value": 10.60441970825195 + "value": 10.604419708251953 } }, { @@ -105948,7 +105948,7 @@ }, "X": { "type": "float", - "value": 299.9530639648438 + "value": 299.95306396484375 }, "Y": { "type": "float", @@ -105956,7 +105956,7 @@ }, "Z": { "type": "float", - "value": 10.29999160766602 + "value": 10.299991607666016 } }, { @@ -106171,7 +106171,7 @@ }, "X": { "type": "float", - "value": 299.9530639648438 + "value": 299.95306396484375 }, "Y": { "type": "float", @@ -106179,7 +106179,7 @@ }, "Z": { "type": "float", - "value": 10.29999160766602 + "value": 10.299991607666016 } }, { @@ -106402,7 +106402,7 @@ }, "Z": { "type": "float", - "value": 10.29999160766602 + "value": 10.299991607666016 } }, { @@ -106617,7 +106617,7 @@ }, "X": { "type": "float", - "value": 302.8109741210938 + "value": 302.81097412109375 }, "Y": { "type": "float", @@ -106625,7 +106625,7 @@ }, "Z": { "type": "float", - "value": 10.29999160766602 + "value": 10.299991607666016 } }, { @@ -106848,7 +106848,7 @@ }, "Z": { "type": "float", - "value": 10.29999160766602 + "value": 10.299991607666016 } }, { @@ -107071,7 +107071,7 @@ }, "Z": { "type": "float", - "value": 10.29999160766602 + "value": 10.299991607666016 } }, { @@ -107292,11 +107292,11 @@ }, "Y": { "type": "float", - "value": 62.23473739624023 + "value": 62.234737396240234 }, "Z": { "type": "float", - "value": 10.29999160766602 + "value": 10.299991607666016 } }, { @@ -107515,11 +107515,11 @@ }, "Y": { "type": "float", - "value": 62.81906127929688 + "value": 62.819061279296875 }, "Z": { "type": "float", - "value": 10.31498146057129 + "value": 10.314981460571289 } }, { @@ -107840,7 +107840,7 @@ }, "X": { "type": "float", - "value": 300.0836791992188 + "value": 300.08367919921875 }, "Y": { "type": "float", @@ -107848,7 +107848,7 @@ }, "Z": { "type": "float", - "value": 10.29999160766602 + "value": 10.299991607666016 } }, { @@ -107867,7 +107867,7 @@ }, "Bearing": { "type": "float", - "value": 1.570794224739075 + "value": 1.5707942247390747 }, "BodyBag": { "type": "byte", @@ -108063,7 +108063,7 @@ }, "X": { "type": "float", - "value": 20.01228523254395 + "value": 20.012285232543945 }, "Y": { "type": "float", @@ -108071,7 +108071,7 @@ }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -108296,7 +108296,7 @@ }, "Z": { "type": "float", - "value": 1.999999046325684 + "value": 1.9999990463256836 } }, { @@ -108513,7 +108513,7 @@ }, "X": { "type": "float", - "value": 17.97070503234863 + "value": 17.970705032348633 }, "Y": { "type": "float", @@ -108521,7 +108521,7 @@ }, "Z": { "type": "float", - "value": 1.999999046325684 + "value": 1.9999990463256836 } }, { @@ -108540,7 +108540,7 @@ }, "Bearing": { "type": "float", - "value": -2.89939627862168e-008 + "value": -2.8993962786216798e-8 }, "BodyBag": { "type": "byte", @@ -108738,7 +108738,7 @@ }, "X": { "type": "float", - "value": 20.22084808349609 + "value": 20.220848083496094 }, "Y": { "type": "float", @@ -108746,7 +108746,7 @@ }, "Z": { "type": "float", - "value": 2.499991416931152 + "value": 2.4999914169311523 } }, { @@ -108963,7 +108963,7 @@ }, "X": { "type": "float", - "value": 25.48064994812012 + "value": 25.480649948120117 }, "Y": { "type": "float", @@ -108971,7 +108971,7 @@ }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -109188,15 +109188,15 @@ }, "X": { "type": "float", - "value": 14.45218086242676 + "value": 14.452180862426758 }, "Y": { "type": "float", - "value": 62.44549179077148 + "value": 62.445491790771484 }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -109421,7 +109421,7 @@ }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -109638,7 +109638,7 @@ }, "X": { "type": "float", - "value": 25.51071166992188 + "value": 25.510711669921875 }, "Y": { "type": "float", @@ -109646,7 +109646,7 @@ }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -110111,7 +110111,7 @@ }, "Bearing": { "type": "float", - "value": -1.570794224739075 + "value": -1.5707942247390747 }, "BodyBag": { "type": "byte", @@ -110309,15 +110309,15 @@ }, "X": { "type": "float", - "value": 70.49318695068359 + "value": 70.4931869506836 }, "Y": { "type": "float", - "value": 112.8616256713867 + "value": 112.86162567138672 }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -110336,7 +110336,7 @@ }, "Bearing": { "type": "float", - "value": -1.619882822036743 + "value": -1.6198828220367432 }, "BodyBag": { "type": "byte", @@ -110534,7 +110534,7 @@ }, "X": { "type": "float", - "value": 69.57302093505859 + "value": 69.5730209350586 }, "Y": { "type": "float", @@ -110542,7 +110542,7 @@ }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -110561,7 +110561,7 @@ }, "Bearing": { "type": "float", - "value": 1.570794224739075 + "value": 1.5707942247390747 }, "BodyBag": { "type": "byte", @@ -110767,7 +110767,7 @@ }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -110786,7 +110786,7 @@ }, "Bearing": { "type": "float", - "value": 1.570794224739075 + "value": 1.5707942247390747 }, "BodyBag": { "type": "byte", @@ -110984,15 +110984,15 @@ }, "X": { "type": "float", - "value": 129.7157897949219 + "value": 129.71578979492188 }, "Y": { "type": "float", - "value": 27.14632606506348 + "value": 27.146326065063477 }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -111011,7 +111011,7 @@ }, "Bearing": { "type": "float", - "value": -1.570794224739075 + "value": -1.5707942247390747 }, "BodyBag": { "type": "byte", @@ -111215,7 +111215,7 @@ }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -111234,7 +111234,7 @@ }, "Bearing": { "type": "float", - "value": -1.570794224739075 + "value": -1.5707942247390747 }, "BodyBag": { "type": "byte", @@ -111430,7 +111430,7 @@ }, "X": { "type": "float", - "value": 210.2550201416016 + "value": 210.25502014160156 }, "Y": { "type": "float", @@ -111438,7 +111438,7 @@ }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -111457,7 +111457,7 @@ }, "Bearing": { "type": "float", - "value": -1.570794224739075 + "value": -1.5707942247390747 }, "BodyBag": { "type": "byte", @@ -111653,7 +111653,7 @@ }, "X": { "type": "float", - "value": 209.5356140136719 + "value": 209.53561401367188 }, "Y": { "type": "float", @@ -111661,7 +111661,7 @@ }, "Z": { "type": "float", - "value": 9.924173355102539e-006 + "value": 0.000009924173355102539 } }, { @@ -111680,7 +111680,7 @@ }, "Bearing": { "type": "float", - "value": -1.570794224739075 + "value": -1.5707942247390747 }, "BodyBag": { "type": "byte", @@ -111880,7 +111880,7 @@ }, "Y": { "type": "float", - "value": 120.3444671630859 + "value": 120.34446716308594 }, "Z": { "type": "float", @@ -111903,7 +111903,7 @@ }, "Bearing": { "type": "float", - "value": -1.521707773208618 + "value": -1.5217077732086182 }, "BodyBag": { "type": "byte", @@ -112126,7 +112126,7 @@ }, "Bearing": { "type": "float", - "value": 1.570794224739075 + "value": 1.5707942247390747 }, "BodyBag": { "type": "byte", @@ -112324,7 +112324,7 @@ }, "X": { "type": "float", - "value": 129.8370056152344 + "value": 129.83700561523438 }, "Y": { "type": "float", @@ -112332,7 +112332,7 @@ }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -112555,7 +112555,7 @@ }, "Z": { "type": "float", - "value": 0.001895427703857422 + "value": 0.0018954277038574219 } }, { @@ -112574,7 +112574,7 @@ }, "Bearing": { "type": "float", - "value": -2.165318164770724e-006 + "value": -0.0000021653181647707243 }, "BodyBag": { "type": "byte", @@ -112772,7 +112772,7 @@ }, "X": { "type": "float", - "value": 19.63589477539063 + "value": 19.635894775390625 }, "Y": { "type": "float", @@ -112780,7 +112780,7 @@ }, "Z": { "type": "float", - "value": 0.001326560974121094 + "value": 0.0013265609741210938 } }, { @@ -113001,7 +113001,7 @@ }, "Y": { "type": "float", - "value": 31.85874176025391 + "value": 31.858741760253906 }, "Z": { "type": "float", @@ -113443,11 +113443,11 @@ }, "X": { "type": "float", - "value": 267.1006469726563 + "value": 267.10064697265625 }, "Y": { "type": "float", - "value": 39.41635131835938 + "value": 39.416351318359375 }, "Z": { "type": "float", @@ -113670,7 +113670,7 @@ }, "Y": { "type": "float", - "value": 30.03328323364258 + "value": 30.033283233642578 }, "Z": { "type": "float", @@ -113899,7 +113899,7 @@ }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -114114,7 +114114,7 @@ }, "X": { "type": "float", - "value": 25.39811515808106 + "value": 25.398115158081055 }, "Y": { "type": "float", @@ -114122,7 +114122,7 @@ }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -114141,7 +114141,7 @@ }, "Bearing": { "type": "float", - "value": -1.570794224739075 + "value": -1.5707942247390747 }, "BodyBag": { "type": "byte", @@ -114337,7 +114337,7 @@ }, "X": { "type": "float", - "value": 26.4509391784668 + "value": 26.450939178466797 }, "Y": { "type": "float", @@ -114345,7 +114345,7 @@ }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -114560,15 +114560,15 @@ }, "X": { "type": "float", - "value": 19.99375724792481 + "value": 19.993757247924805 }, "Y": { "type": "float", - "value": 57.00736236572266 + "value": 57.007362365722656 }, "Z": { "type": "float", - "value": 1.999999046325684 + "value": 1.9999990463256836 } }, { @@ -114587,7 +114587,7 @@ }, "Bearing": { "type": "float", - "value": 1.48964831581111e-008 + "value": 1.4896483158111096e-8 }, "BodyBag": { "type": "byte", @@ -114785,7 +114785,7 @@ }, "X": { "type": "float", - "value": 15.03494167327881 + "value": 15.034941673278809 }, "Y": { "type": "float", @@ -114793,7 +114793,7 @@ }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -115010,7 +115010,7 @@ }, "X": { "type": "float", - "value": 25.02466201782227 + "value": 25.024662017822266 }, "Y": { "type": "float", @@ -115018,7 +115018,7 @@ }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -115241,7 +115241,7 @@ }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -115260,7 +115260,7 @@ }, "Bearing": { "type": "float", - "value": -2.65070390701294 + "value": -2.6507039070129395 }, "BodyBag": { "type": "byte", @@ -115558,15 +115558,15 @@ }, "X": { "type": "float", - "value": 24.92983818054199 + "value": 24.929838180541992 }, "Y": { "type": "float", - "value": 60.65828704833984 + "value": 60.658287048339844 }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -115783,7 +115783,7 @@ }, "X": { "type": "float", - "value": 300.8903198242188 + "value": 300.89031982421875 }, "Y": { "type": "float", @@ -115791,7 +115791,7 @@ }, "Z": { "type": "float", - "value": 10.3150110244751 + "value": 10.315011024475098 } }, { @@ -116006,11 +116006,11 @@ }, "X": { "type": "float", - "value": 268.4515991210938 + "value": 268.45159912109375 }, "Y": { "type": "float", - "value": 17.43462944030762 + "value": 17.434629440307617 }, "Z": { "type": "float", @@ -116033,7 +116033,7 @@ }, "Bearing": { "type": "float", - "value": 1.227183341979981 + "value": 1.2271833419799805 }, "BodyBag": { "type": "byte", @@ -116258,7 +116258,7 @@ }, "Bearing": { "type": "float", - "value": -1.570794224739075 + "value": -1.5707942247390747 }, "BodyBag": { "type": "byte", @@ -116456,7 +116456,7 @@ }, "X": { "type": "float", - "value": 93.08926391601563 + "value": 93.08926391601562 }, "Y": { "type": "float", @@ -116464,7 +116464,7 @@ }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -116483,7 +116483,7 @@ }, "Bearing": { "type": "float", - "value": -1.570794224739075 + "value": -1.5707942247390747 }, "BodyBag": { "type": "byte", @@ -116685,7 +116685,7 @@ }, "Y": { "type": "float", - "value": 120.0143127441406 + "value": 120.01431274414062 }, "Z": { "type": "float", @@ -116708,7 +116708,7 @@ }, "Bearing": { "type": "float", - "value": -1.570794224739075 + "value": -1.5707942247390747 }, "BodyBag": { "type": "byte", @@ -116914,7 +116914,7 @@ }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -116933,7 +116933,7 @@ }, "Bearing": { "type": "float", - "value": 1.570794224739075 + "value": 1.5707942247390747 }, "BodyBag": { "type": "byte", @@ -117131,7 +117131,7 @@ }, "X": { "type": "float", - "value": 36.81685638427734 + "value": 36.816856384277344 }, "Y": { "type": "float", @@ -117139,7 +117139,7 @@ }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -117158,7 +117158,7 @@ }, "Bearing": { "type": "float", - "value": 1.570794224739075 + "value": 1.5707942247390747 }, "BodyBag": { "type": "byte", @@ -117364,7 +117364,7 @@ }, "Z": { "type": "float", - "value": 9.894371032714844e-006 + "value": 0.000009894371032714844 } }, { @@ -117383,7 +117383,7 @@ }, "Bearing": { "type": "float", - "value": 1.570794224739075 + "value": 1.5707942247390747 }, "BodyBag": { "type": "byte", @@ -117589,7 +117589,7 @@ }, "Z": { "type": "float", - "value": 9.894371032714844e-006 + "value": 0.000009894371032714844 } }, { @@ -117608,7 +117608,7 @@ }, "Bearing": { "type": "float", - "value": -1.570794224739075 + "value": -1.5707942247390747 }, "BodyBag": { "type": "byte", @@ -117814,7 +117814,7 @@ }, "Z": { "type": "float", - "value": 10.00295829772949 + "value": 10.002958297729492 } }, { @@ -117833,7 +117833,7 @@ }, "Bearing": { "type": "float", - "value": -1.570794224739075 + "value": -1.5707942247390747 }, "BodyBag": { "type": "byte", @@ -118039,7 +118039,7 @@ }, "Z": { "type": "float", - "value": 10.00295829772949 + "value": 10.002958297729492 } }, { @@ -118481,7 +118481,7 @@ }, "Y": { "type": "float", - "value": 157.4495239257813 + "value": 157.44952392578125 }, "Z": { "type": "float", @@ -118704,7 +118704,7 @@ }, "Y": { "type": "float", - "value": 157.5613403320313 + "value": 157.56134033203125 }, "Z": { "type": "float", @@ -118927,7 +118927,7 @@ }, "Y": { "type": "float", - "value": 136.4018859863281 + "value": 136.40188598632812 }, "Z": { "type": "float", @@ -118950,7 +118950,7 @@ }, "Bearing": { "type": "float", - "value": -2.061669826507568 + "value": -2.0616698265075684 }, "BodyBag": { "type": "byte", @@ -119146,7 +119146,7 @@ }, "X": { "type": "float", - "value": 274.3579711914063 + "value": 274.35797119140625 }, "Y": { "type": "float", @@ -119173,7 +119173,7 @@ }, "Bearing": { "type": "float", - "value": -1.668970465660095 + "value": -1.6689704656600952 }, "BodyBag": { "type": "byte", @@ -119396,7 +119396,7 @@ }, "Bearing": { "type": "float", - "value": -1.3253573179245 + "value": -1.3253573179244995 }, "BodyBag": { "type": "byte", @@ -119596,7 +119596,7 @@ }, "Y": { "type": "float", - "value": 142.2685852050781 + "value": 142.26858520507812 }, "Z": { "type": "float", @@ -119842,7 +119842,7 @@ }, "Bearing": { "type": "float", - "value": -0.3926971256732941 + "value": -0.39269712567329407 }, "BodyBag": { "type": "byte", @@ -120040,15 +120040,15 @@ }, "X": { "type": "float", - "value": 241.0391540527344 + "value": 241.03915405273438 }, "Y": { "type": "float", - "value": 79.29079437255859 + "value": 79.2907943725586 }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -120067,7 +120067,7 @@ }, "Bearing": { "type": "float", - "value": -1.570794224739075 + "value": -1.5707942247390747 }, "BodyBag": { "type": "byte", @@ -120265,7 +120265,7 @@ }, "X": { "type": "float", - "value": 3.056785345077515 + "value": 3.0567853450775146 }, "Y": { "type": "float", @@ -120273,7 +120273,7 @@ }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -120292,7 +120292,7 @@ }, "Bearing": { "type": "float", - "value": -1.472620248794556 + "value": -1.4726202487945557 }, "BodyBag": { "type": "byte", @@ -120496,7 +120496,7 @@ }, "Z": { "type": "float", - "value": 11.47871112823486 + "value": 11.478711128234863 } }, { @@ -120515,7 +120515,7 @@ }, "Bearing": { "type": "float", - "value": -1.030834794044495 + "value": -1.0308347940444946 }, "BodyBag": { "type": "byte", @@ -120740,7 +120740,7 @@ }, "Bearing": { "type": "float", - "value": -1.030834794044495 + "value": -1.0308347940444946 }, "BodyBag": { "type": "byte", @@ -120965,7 +120965,7 @@ }, "Bearing": { "type": "float", - "value": -1.030834794044495 + "value": -1.0308347940444946 }, "BodyBag": { "type": "byte", @@ -121167,11 +121167,11 @@ }, "Y": { "type": "float", - "value": 89.02516937255859 + "value": 89.0251693725586 }, "Z": { "type": "float", - "value": 10.00000381469727 + "value": 10.000003814697266 } }, { @@ -121190,7 +121190,7 @@ }, "Bearing": { "type": "float", - "value": -1.030834794044495 + "value": -1.0308347940444946 }, "BodyBag": { "type": "byte", @@ -121415,7 +121415,7 @@ }, "Bearing": { "type": "float", - "value": -1.030834794044495 + "value": -1.0308347940444946 }, "BodyBag": { "type": "byte", @@ -121617,7 +121617,7 @@ }, "Y": { "type": "float", - "value": 88.51194000244141 + "value": 88.5119400024414 }, "Z": { "type": "float", @@ -121640,7 +121640,7 @@ }, "Bearing": { "type": "float", - "value": -1.030834794044495 + "value": -1.0308347940444946 }, "BodyBag": { "type": "byte", @@ -122959,7 +122959,7 @@ }, "X": { "type": "float", - "value": 304.9618530273438 + "value": 304.96185302734375 }, "Y": { "type": "float", @@ -123182,11 +123182,11 @@ }, "X": { "type": "float", - "value": 302.1443481445313 + "value": 302.14434814453125 }, "Y": { "type": "float", - "value": 85.28835296630859 + "value": 85.2883529663086 }, "Z": { "type": "float", @@ -123209,7 +123209,7 @@ }, "Bearing": { "type": "float", - "value": -0.4417861104011536 + "value": -0.44178611040115356 }, "BodyBag": { "type": "byte", @@ -123432,7 +123432,7 @@ }, "Bearing": { "type": "float", - "value": -2.601626634597778 + "value": -2.6016266345977783 }, "BodyBag": { "type": "byte", @@ -123638,7 +123638,7 @@ }, "Z": { "type": "float", - "value": 10.88238048553467 + "value": 10.882380485534668 } }, { @@ -123855,7 +123855,7 @@ }, "X": { "type": "float", - "value": 299.6753540039063 + "value": 299.67535400390625 }, "Y": { "type": "float", @@ -123863,7 +123863,7 @@ }, "Z": { "type": "float", - "value": 10.88443946838379 + "value": 10.884439468383789 } }, { @@ -124528,7 +124528,7 @@ }, "Y": { "type": "float", - "value": 89.70473480224609 + "value": 89.7047348022461 }, "Z": { "type": "float", @@ -124551,7 +124551,7 @@ }, "Bearing": { "type": "float", - "value": 1.816226124763489 + "value": 1.8162261247634888 }, "BodyBag": { "type": "byte", @@ -124774,7 +124774,7 @@ }, "Bearing": { "type": "float", - "value": -2.159842491149902 + "value": -2.1598424911499023 }, "BodyBag": { "type": "byte", @@ -125195,7 +125195,7 @@ }, "X": { "type": "float", - "value": 306.7456665039063 + "value": 306.74566650390625 }, "Y": { "type": "float", @@ -125203,7 +125203,7 @@ }, "Z": { "type": "float", - "value": 10.03789520263672 + "value": 10.037895202636719 } }, { @@ -125222,7 +125222,7 @@ }, "Bearing": { "type": "float", - "value": 1.276271224021912 + "value": 1.2762712240219116 }, "BodyBag": { "type": "byte", @@ -125422,7 +125422,7 @@ }, "Y": { "type": "float", - "value": 92.62375640869141 + "value": 92.6237564086914 }, "Z": { "type": "float", @@ -125445,7 +125445,7 @@ }, "Bearing": { "type": "float", - "value": -1.619882822036743 + "value": -1.6198828220367432 }, "BodyBag": { "type": "byte", @@ -125641,11 +125641,11 @@ }, "X": { "type": "float", - "value": 277.3721313476563 + "value": 277.37213134765625 }, "Y": { "type": "float", - "value": 91.12001800537109 + "value": 91.1200180053711 }, "Z": { "type": "float", @@ -125668,7 +125668,7 @@ }, "Bearing": { "type": "float", - "value": -2.012580871582031 + "value": -2.0125808715820312 }, "BodyBag": { "type": "byte", @@ -126087,7 +126087,7 @@ }, "X": { "type": "float", - "value": 276.2352905273438 + "value": 276.23529052734375 }, "Y": { "type": "float", @@ -126114,7 +126114,7 @@ }, "Bearing": { "type": "float", - "value": 1.374445557594299 + "value": 1.3744455575942993 }, "BodyBag": { "type": "byte", @@ -126314,7 +126314,7 @@ }, "Y": { "type": "float", - "value": 101.7291793823242 + "value": 101.72917938232422 }, "Z": { "type": "float", @@ -126337,7 +126337,7 @@ }, "Bearing": { "type": "float", - "value": -1.619882822036743 + "value": -1.6198828220367432 }, "BodyBag": { "type": "byte", @@ -126533,11 +126533,11 @@ }, "X": { "type": "float", - "value": 278.0505981445313 + "value": 278.05059814453125 }, "Y": { "type": "float", - "value": 100.0698318481445 + "value": 100.06983184814453 }, "Z": { "type": "float", @@ -126560,7 +126560,7 @@ }, "Bearing": { "type": "float", - "value": -1.668970465660095 + "value": -1.6689704656600952 }, "BodyBag": { "type": "byte", @@ -127006,7 +127006,7 @@ }, "Bearing": { "type": "float", - "value": -1.570795297622681 + "value": -1.5707952976226807 }, "BodyBag": { "type": "byte", @@ -127202,7 +127202,7 @@ }, "X": { "type": "float", - "value": 278.0791625976563 + "value": 278.07916259765625 }, "Y": { "type": "float", @@ -127229,7 +127229,7 @@ }, "Bearing": { "type": "float", - "value": -1.619882822036743 + "value": -1.6198828220367432 }, "BodyBag": { "type": "byte", @@ -127425,7 +127425,7 @@ }, "X": { "type": "float", - "value": 278.0623168945313 + "value": 278.06231689453125 }, "Y": { "type": "float", @@ -127675,7 +127675,7 @@ }, "Bearing": { "type": "float", - "value": -1.619882822036743 + "value": -1.6198828220367432 }, "BodyBag": { "type": "byte", @@ -127898,7 +127898,7 @@ }, "Bearing": { "type": "float", - "value": -1.276271224021912 + "value": -1.2762712240219116 }, "BodyBag": { "type": "byte", @@ -128317,7 +128317,7 @@ }, "X": { "type": "float", - "value": 275.8082885742188 + "value": 275.80828857421875 }, "Y": { "type": "float", @@ -128344,7 +128344,7 @@ }, "Bearing": { "type": "float", - "value": -1.276271224021912 + "value": -1.2762712240219116 }, "BodyBag": { "type": "byte", @@ -128540,7 +128540,7 @@ }, "X": { "type": "float", - "value": 277.1901245117188 + "value": 277.19012451171875 }, "Y": { "type": "float", @@ -128670,7 +128670,7 @@ }, "YPosition": { "type": "float", - "value": 25.05631637573242 + "value": 25.056316375732422 }, "ZPosition": { "type": "float", @@ -128791,7 +128791,7 @@ }, "YPosition": { "type": "float", - "value": 145.2330932617188 + "value": 145.23309326171875 }, "ZPosition": { "type": "float", @@ -128908,11 +128908,11 @@ }, "XPosition": { "type": "float", - "value": 165.1327819824219 + "value": 165.13278198242188 }, "YPosition": { "type": "float", - "value": 85.16787719726563 + "value": 85.16787719726562 }, "ZPosition": { "type": "float", @@ -129029,7 +129029,7 @@ }, "XPosition": { "type": "float", - "value": 19.97977828979492 + "value": 19.979778289794922 }, "YPosition": { "type": "float", @@ -129154,7 +129154,7 @@ }, "YPosition": { "type": "float", - "value": 10.27902221679688 + "value": 10.279022216796875 }, "ZPosition": { "type": "float", @@ -129211,7 +129211,7 @@ }, "PitchVariation": { "type": "float", - "value": 0.2000000029802322 + "value": 0.20000000298023224 }, "Positional": { "type": "byte", @@ -129289,11 +129289,11 @@ }, "YPosition": { "type": "float", - "value": 154.2946472167969 + "value": 154.29464721679688 }, "ZPosition": { "type": "float", - "value": 11.01632118225098 + "value": 11.016321182250977 } }, { @@ -129410,7 +129410,7 @@ }, "YPosition": { "type": "float", - "value": 140.9833374023438 + "value": 140.98333740234375 }, "ZPosition": { "type": "float", @@ -129463,7 +129463,7 @@ }, "MinDistance": { "type": "float", - "value": 1.200000047683716 + "value": 1.2000000476837158 }, "PitchVariation": { "type": "float", @@ -129531,7 +129531,7 @@ }, "YPosition": { "type": "float", - "value": 74.23720550537109 + "value": 74.2372055053711 }, "ZPosition": { "type": "float", @@ -129652,7 +129652,7 @@ }, "YPosition": { "type": "float", - "value": 116.0396423339844 + "value": 116.03964233398438 }, "ZPosition": { "type": "float", @@ -129894,7 +129894,7 @@ }, "YPosition": { "type": "float", - "value": 25.53628540039063 + "value": 25.536285400390625 }, "ZPosition": { "type": "float", @@ -130132,7 +130132,7 @@ }, "XPosition": { "type": "float", - "value": 19.78896522521973 + "value": 19.788965225219727 }, "YPosition": { "type": "float", @@ -130261,7 +130261,7 @@ }, "ZPosition": { "type": "float", - "value": 1.213798522949219 + "value": 1.2137985229492188 } }, { @@ -130374,15 +130374,15 @@ }, "XPosition": { "type": "float", - "value": 182.6023864746094 + "value": 182.60238647460938 }, "YPosition": { "type": "float", - "value": 111.093147277832 + "value": 111.09314727783203 }, "ZPosition": { "type": "float", - "value": 1.063915252685547 + "value": 1.0639152526855469 } }, { @@ -130499,7 +130499,7 @@ }, "YPosition": { "type": "float", - "value": 114.2565460205078 + "value": 114.25654602050781 }, "ZPosition": { "type": "float", @@ -130620,11 +130620,11 @@ }, "YPosition": { "type": "float", - "value": 17.28717422485352 + "value": 17.287174224853516 }, "ZPosition": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -130745,7 +130745,7 @@ }, "ZPosition": { "type": "float", - "value": 1.499993562698364 + "value": 1.4999935626983643 } }, { @@ -130798,7 +130798,7 @@ }, "PitchVariation": { "type": "float", - "value": 0.2000000029802322 + "value": 0.20000000298023224 }, "Positional": { "type": "byte", @@ -130893,7 +130893,7 @@ }, "XPosition": { "type": "float", - "value": 20.65936660766602 + "value": 20.659366607666016 }, "YPosition": { "type": "float", @@ -130954,7 +130954,7 @@ }, "PitchVariation": { "type": "float", - "value": 0.2000000029802322 + "value": 0.20000000298023224 }, "Positional": { "type": "byte", @@ -131014,7 +131014,7 @@ }, "XPosition": { "type": "float", - "value": 219.6949310302734 + "value": 219.69493103027344 }, "YPosition": { "type": "float", @@ -131075,7 +131075,7 @@ }, "PitchVariation": { "type": "float", - "value": 0.2000000029802322 + "value": 0.20000000298023224 }, "Positional": { "type": "byte", @@ -131150,7 +131150,7 @@ }, "ZPosition": { "type": "float", - "value": 1.200017929077148 + "value": 1.2000179290771484 } }, { @@ -131199,7 +131199,7 @@ }, "MinDistance": { "type": "float", - "value": 0.300000011920929 + "value": 0.30000001192092896 }, "PitchVariation": { "type": "float", @@ -131267,7 +131267,7 @@ }, "YPosition": { "type": "float", - "value": 101.2660675048828 + "value": 101.26606750488281 }, "ZPosition": { "type": "float", @@ -131320,7 +131320,7 @@ }, "MinDistance": { "type": "float", - "value": 0.300000011920929 + "value": 0.30000001192092896 }, "PitchVariation": { "type": "float", @@ -131384,7 +131384,7 @@ }, "XPosition": { "type": "float", - "value": 303.6536254882813 + "value": 303.65362548828125 }, "YPosition": { "type": "float", @@ -131392,7 +131392,7 @@ }, "ZPosition": { "type": "float", - "value": 11.49999904632568 + "value": 11.499999046325684 } }, { @@ -131445,7 +131445,7 @@ }, "PitchVariation": { "type": "float", - "value": 0.2000000029802322 + "value": 0.20000000298023224 }, "Positional": { "type": "byte", @@ -131523,7 +131523,7 @@ }, "YPosition": { "type": "float", - "value": 158.4606018066406 + "value": 158.46060180664062 }, "ZPosition": { "type": "float", @@ -131580,7 +131580,7 @@ }, "PitchVariation": { "type": "float", - "value": 0.2000000029802322 + "value": 0.20000000298023224 }, "Positional": { "type": "byte", @@ -131654,11 +131654,11 @@ }, "XPosition": { "type": "float", - "value": 49.92742538452148 + "value": 49.927425384521484 }, "YPosition": { "type": "float", - "value": 129.3464660644531 + "value": 129.34646606445312 }, "ZPosition": { "type": "float", @@ -131715,7 +131715,7 @@ }, "PitchVariation": { "type": "float", - "value": 0.2000000029802322 + "value": 0.20000000298023224 }, "Positional": { "type": "byte", @@ -131789,11 +131789,11 @@ }, "XPosition": { "type": "float", - "value": 10.16726875305176 + "value": 10.167268753051758 }, "YPosition": { "type": "float", - "value": 126.3921051025391 + "value": 126.39210510253906 }, "ZPosition": { "type": "float", @@ -131850,7 +131850,7 @@ }, "PitchVariation": { "type": "float", - "value": 0.2000000029802322 + "value": 0.20000000298023224 }, "Positional": { "type": "byte", @@ -131932,7 +131932,7 @@ }, "ZPosition": { "type": "float", - "value": -1.900007486343384 + "value": -1.9000074863433838 } }, { @@ -131981,7 +131981,7 @@ }, "MinDistance": { "type": "float", - "value": 0.300000011920929 + "value": 0.30000001192092896 }, "PitchVariation": { "type": "float", @@ -132045,11 +132045,11 @@ }, "XPosition": { "type": "float", - "value": 209.5482788085938 + "value": 209.54827880859375 }, "YPosition": { "type": "float", - "value": 67.98923492431641 + "value": 67.9892349243164 }, "ZPosition": { "type": "float", @@ -132166,7 +132166,7 @@ }, "XPosition": { "type": "float", - "value": 213.6505737304688 + "value": 213.65057373046875 }, "YPosition": { "type": "float", @@ -132174,7 +132174,7 @@ }, "ZPosition": { "type": "float", - "value": 1.510001659393311 + "value": 1.5100016593933105 } }, { @@ -132295,7 +132295,7 @@ }, "ZPosition": { "type": "float", - "value": 1.510001659393311 + "value": 1.5100016593933105 } }, { @@ -132416,7 +132416,7 @@ }, "ZPosition": { "type": "float", - "value": 1.510001659393311 + "value": 1.5100016593933105 } }, { @@ -132654,11 +132654,11 @@ }, "YPosition": { "type": "float", - "value": 64.48245239257813 + "value": 64.48245239257812 }, "ZPosition": { "type": "float", - "value": 11.79999160766602 + "value": 11.799991607666016 } }, { @@ -132711,7 +132711,7 @@ }, "PitchVariation": { "type": "float", - "value": 0.2000000029802322 + "value": 0.20000000298023224 }, "Positional": { "type": "byte", @@ -132785,11 +132785,11 @@ }, "XPosition": { "type": "float", - "value": 22.71162605285645 + "value": 22.711626052856445 }, "YPosition": { "type": "float", - "value": 117.5550689697266 + "value": 117.55506896972656 }, "ZPosition": { "type": "float", @@ -132846,7 +132846,7 @@ }, "PitchVariation": { "type": "float", - "value": 0.2000000029802322 + "value": 0.20000000298023224 }, "Positional": { "type": "byte", @@ -132945,7 +132945,7 @@ }, "YPosition": { "type": "float", - "value": 137.3650054931641 + "value": 137.36500549316406 }, "ZPosition": { "type": "float", @@ -133002,7 +133002,7 @@ }, "PitchVariation": { "type": "float", - "value": 0.2000000029802322 + "value": 0.20000000298023224 }, "Positional": { "type": "byte", @@ -133087,7 +133087,7 @@ }, "YPosition": { "type": "float", - "value": 101.4453277587891 + "value": 101.44532775878906 }, "ZPosition": { "type": "float", @@ -133265,7 +133265,7 @@ }, "PitchVariation": { "type": "float", - "value": 0.2000000029802322 + "value": 0.20000000298023224 }, "Positional": { "type": "byte", @@ -133347,7 +133347,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2980575561523438 + "value": 0.29805755615234375 } }, { @@ -133460,7 +133460,7 @@ }, "XPosition": { "type": "float", - "value": 129.1186676025391 + "value": 129.11866760253906 }, "YPosition": { "type": "float", @@ -133521,7 +133521,7 @@ }, "PitchVariation": { "type": "float", - "value": 0.2000000029802322 + "value": 0.20000000298023224 }, "Positional": { "type": "byte", @@ -133589,7 +133589,7 @@ }, "ZPosition": { "type": "float", - "value": 11.79999160766602 + "value": 11.799991607666016 } }, { @@ -133702,11 +133702,11 @@ }, "XPosition": { "type": "float", - "value": 29.75621032714844 + "value": 29.756210327148438 }, "YPosition": { "type": "float", - "value": 27.62943267822266 + "value": 27.629432678222656 }, "ZPosition": { "type": "float", @@ -133823,11 +133823,11 @@ }, "XPosition": { "type": "float", - "value": 21.14938926696777 + "value": 21.149389266967773 }, "YPosition": { "type": "float", - "value": 30.89598083496094 + "value": 30.895980834960938 }, "ZPosition": { "type": "float", @@ -133884,7 +133884,7 @@ }, "PitchVariation": { "type": "float", - "value": 0.2000000029802322 + "value": 0.20000000298023224 }, "Positional": { "type": "byte", @@ -133952,7 +133952,7 @@ }, "ZPosition": { "type": "float", - "value": 1.468146681785584 + "value": 1.4681466817855835 } }, { @@ -134065,7 +134065,7 @@ }, "XPosition": { "type": "float", - "value": 128.6749572753906 + "value": 128.67495727539062 }, "YPosition": { "type": "float", @@ -134311,7 +134311,7 @@ }, "YPosition": { "type": "float", - "value": 113.8332824707031 + "value": 113.83328247070312 }, "ZPosition": { "type": "float", @@ -152150,19 +152150,19 @@ }, "XPosition": { "type": "float", - "value": 26.42149925231934 + "value": 26.421499252319336 }, "YOrientation": { "type": "float", - "value": 0.04906884208321571 + "value": 0.049068842083215714 }, "YPosition": { "type": "float", - "value": 41.54800415039063 + "value": 41.548004150390625 }, "ZPosition": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -191478,11 +191478,11 @@ }, "XPosition": { "type": "float", - "value": 29.08280181884766 + "value": 29.082801818847656 }, "YOrientation": { "type": "float", - "value": 2.102055759678478e-006 + "value": 0.0000021020557596784784 }, "YPosition": { "type": "float", @@ -191490,7 +191490,7 @@ }, "ZPosition": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -202913,11 +202913,11 @@ }, "XPosition": { "type": "float", - "value": 31.72387504577637 + "value": 31.723875045776367 }, "YOrientation": { "type": "float", - "value": 2.102055759678478e-006 + "value": 0.0000021020557596784784 }, "YPosition": { "type": "float", @@ -202925,7 +202925,7 @@ }, "ZPosition": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } } ] @@ -202973,7 +202973,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.2640457153320313 + "value": 0.26404571533203125 }, "PointY": { "type": "float", @@ -202981,7 +202981,7 @@ }, "PointZ": { "type": "float", - "value": 0.02795972861349583 + "value": 0.027959728613495827 } }, { @@ -203018,7 +203018,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.2594833374023438 + "value": 0.25948333740234375 }, "PointY": { "type": "float", @@ -203146,7 +203146,7 @@ }, "XPosition": { "type": "float", - "value": 95.82253265380859 + "value": 95.8225326538086 }, "YOrientation": { "type": "float", @@ -203194,18 +203194,18 @@ }, "PointY": { "type": "float", - "value": -18.89382934570313 + "value": -18.893829345703125 }, "PointZ": { "type": "float", - "value": 0.02689006365835667 + "value": 0.026890063658356667 } }, { "__struct_id": 3, "PointX": { "type": "float", - "value": 1.031466960906982 + "value": 1.0314669609069824 }, "PointY": { "type": "float", @@ -203213,29 +203213,29 @@ }, "PointZ": { "type": "float", - "value": 0.02688994444906712 + "value": 0.026889944449067116 } }, { "__struct_id": 3, "PointX": { "type": "float", - "value": 1.031530380249023 + "value": 1.0315303802490234 }, "PointY": { "type": "float", - "value": -18.78831481933594 + "value": -18.788314819335938 }, "PointZ": { "type": "float", - "value": 0.02688994444906712 + "value": 0.026889944449067116 } }, { "__struct_id": 3, "PointX": { "type": "float", - "value": 1.117066860198975 + "value": 1.1170668601989746 }, "PointY": { "type": "float", @@ -203363,7 +203363,7 @@ }, "XPosition": { "type": "float", - "value": 0.007966995239257813 + "value": 0.007966995239257812 }, "YOrientation": { "type": "float", @@ -203430,11 +203430,11 @@ }, "XOrientation": { "type": "float", - "value": 7.072289736242965e-005 + "value": 0.00007072289736242965 }, "XPosition": { "type": "float", - "value": 15.04577159881592 + "value": 15.045771598815918 }, "YOrientation": { "type": "float", @@ -203442,11 +203442,11 @@ }, "YPosition": { "type": "float", - "value": 142.8269348144531 + "value": 142.82693481445312 }, "ZPosition": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -203558,7 +203558,7 @@ }, "XPosition": { "type": "float", - "value": 38.48327255249023 + "value": 38.483272552490234 }, "YOrientation": { "type": "float", @@ -203570,7 +203570,7 @@ }, "ZPosition": { "type": "float", - "value": 0.01000165939331055 + "value": 0.010001659393310547 } }, { @@ -203616,11 +203616,11 @@ }, "XOrientation": { "type": "float", - "value": -3.059076547629047e-008 + "value": -3.059076547629047e-8 }, "XPosition": { "type": "float", - "value": 17.45358085632324 + "value": 17.453580856323242 }, "YOrientation": { "type": "float", @@ -203632,7 +203632,7 @@ }, "ZPosition": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -203682,11 +203682,11 @@ }, "XPosition": { "type": "float", - "value": 15.08969020843506 + "value": 15.089690208435059 }, "YOrientation": { "type": "float", - "value": 0.7071069478988648 + "value": 0.7071069478988647 }, "YPosition": { "type": "float", @@ -203694,7 +203694,7 @@ }, "ZPosition": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -203744,19 +203744,19 @@ }, "XPosition": { "type": "float", - "value": 13.92511463165283 + "value": 13.925114631652832 }, "YOrientation": { "type": "float", - "value": 0.4713968634605408 + "value": 0.47139686346054077 }, "YPosition": { "type": "float", - "value": 65.55081176757813 + "value": 65.55081176757812 }, "ZPosition": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -203806,7 +203806,7 @@ }, "XPosition": { "type": "float", - "value": 22.36449241638184 + "value": 22.364492416381836 }, "YOrientation": { "type": "float", @@ -203818,7 +203818,7 @@ }, "ZPosition": { "type": "float", - "value": 0.01000165939331055 + "value": 0.010001659393310547 } }, { @@ -203872,7 +203872,7 @@ }, "YOrientation": { "type": "float", - "value": 0.04906884208321571 + "value": 0.049068842083215714 }, "YPosition": { "type": "float", @@ -203880,7 +203880,7 @@ }, "ZPosition": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -203930,7 +203930,7 @@ }, "XPosition": { "type": "float", - "value": 39.21689605712891 + "value": 39.216896057128906 }, "YOrientation": { "type": "float", @@ -203942,7 +203942,7 @@ }, "ZPosition": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -203992,11 +203992,11 @@ }, "XPosition": { "type": "float", - "value": 100.9066467285156 + "value": 100.90664672851562 }, "YOrientation": { "type": "float", - "value": 2.102055759678478e-006 + "value": 0.0000021020557596784784 }, "YPosition": { "type": "float", @@ -204004,7 +204004,7 @@ }, "ZPosition": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -204054,7 +204054,7 @@ }, "XPosition": { "type": "float", - "value": 101.0907897949219 + "value": 101.09078979492188 }, "YOrientation": { "type": "float", @@ -204066,7 +204066,7 @@ }, "ZPosition": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -204116,11 +204116,11 @@ }, "XPosition": { "type": "float", - "value": 100.8088226318359 + "value": 100.80882263183594 }, "YOrientation": { "type": "float", - "value": 2.102055759678478e-006 + "value": 0.0000021020557596784784 }, "YPosition": { "type": "float", @@ -204128,7 +204128,7 @@ }, "ZPosition": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -204182,11 +204182,11 @@ }, "YOrientation": { "type": "float", - "value": 2.102055759678478e-006 + "value": 0.0000021020557596784784 }, "YPosition": { "type": "float", - "value": 128.7882995605469 + "value": 128.78829956054688 }, "ZPosition": { "type": "float", @@ -204252,7 +204252,7 @@ }, "ZPosition": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -204302,7 +204302,7 @@ }, "XPosition": { "type": "float", - "value": 17.98106193542481 + "value": 17.981061935424805 }, "YOrientation": { "type": "float", @@ -204314,7 +204314,7 @@ }, "ZPosition": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -204376,7 +204376,7 @@ }, "ZPosition": { "type": "float", - "value": 0.01000165939331055 + "value": 0.010001659393310547 } }, { @@ -204422,7 +204422,7 @@ }, "XOrientation": { "type": "float", - "value": -8.940423867898062e-008 + "value": -8.940423867898062e-8 }, "XPosition": { "type": "float", @@ -204438,7 +204438,7 @@ }, "ZPosition": { "type": "float", - "value": 0.01000165939331055 + "value": 0.010001659393310547 } }, { @@ -204484,7 +204484,7 @@ }, "XOrientation": { "type": "float", - "value": -9.575684816809371e-005 + "value": -0.00009575684816809371 }, "XPosition": { "type": "float", @@ -204496,11 +204496,11 @@ }, "YPosition": { "type": "float", - "value": 124.2716979980469 + "value": 124.27169799804688 }, "ZPosition": { "type": "float", - "value": 0.01000165939331055 + "value": 0.010001659393310547 } }, { @@ -204562,7 +204562,7 @@ }, "ZPosition": { "type": "float", - "value": 0.01000165939331055 + "value": 0.010001659393310547 } }, { @@ -204612,11 +204612,11 @@ }, "XPosition": { "type": "float", - "value": 256.0411987304688 + "value": 256.04119873046875 }, "YOrientation": { "type": "float", - "value": 0.04906884208321571 + "value": 0.049068842083215714 }, "YPosition": { "type": "float", @@ -204674,15 +204674,15 @@ }, "XPosition": { "type": "float", - "value": 241.2722015380859 + "value": 241.27220153808594 }, "YOrientation": { "type": "float", - "value": 2.102055759678478e-006 + "value": 0.0000021020557596784784 }, "YPosition": { "type": "float", - "value": 124.7043838500977 + "value": 124.70438385009766 }, "ZPosition": { "type": "float", @@ -204736,7 +204736,7 @@ }, "XPosition": { "type": "float", - "value": 242.2572174072266 + "value": 242.25721740722656 }, "YOrientation": { "type": "float", @@ -204802,15 +204802,15 @@ }, "YOrientation": { "type": "float", - "value": 0.04906884208321571 + "value": 0.049068842083215714 }, "YPosition": { "type": "float", - "value": 124.9314804077148 + "value": 124.93148040771484 }, "ZPosition": { "type": "float", - "value": 0.01000165939331055 + "value": 0.010001659393310547 } }, { @@ -204864,7 +204864,7 @@ }, "YOrientation": { "type": "float", - "value": 0.04906884208321571 + "value": 0.049068842083215714 }, "YPosition": { "type": "float", @@ -204872,7 +204872,7 @@ }, "ZPosition": { "type": "float", - "value": 0.01000165939331055 + "value": 0.010001659393310547 } }, { @@ -204922,11 +204922,11 @@ }, "XPosition": { "type": "float", - "value": 195.5755920410156 + "value": 195.57559204101562 }, "YOrientation": { "type": "float", - "value": 0.04906884208321571 + "value": 0.049068842083215714 }, "YPosition": { "type": "float", @@ -204934,7 +204934,7 @@ }, "ZPosition": { "type": "float", - "value": 0.01000165939331055 + "value": 0.010001659393310547 } }, { @@ -204984,19 +204984,19 @@ }, "XPosition": { "type": "float", - "value": 194.6685180664063 + "value": 194.66851806640625 }, "YOrientation": { "type": "float", - "value": 0.04906884208321571 + "value": 0.049068842083215714 }, "YPosition": { "type": "float", - "value": 145.3059234619141 + "value": 145.30592346191406 }, "ZPosition": { "type": "float", - "value": 0.01000165939331055 + "value": 0.010001659393310547 } }, { @@ -205050,7 +205050,7 @@ }, "YOrientation": { "type": "float", - "value": 0.04906884208321571 + "value": 0.049068842083215714 }, "YPosition": { "type": "float", @@ -205058,7 +205058,7 @@ }, "ZPosition": { "type": "float", - "value": 0.01000165939331055 + "value": 0.010001659393310547 } }, { @@ -205108,7 +205108,7 @@ }, "XPosition": { "type": "float", - "value": 135.6580657958984 + "value": 135.65806579589844 }, "YOrientation": { "type": "float", @@ -205116,11 +205116,11 @@ }, "YPosition": { "type": "float", - "value": 145.1669006347656 + "value": 145.16690063476562 }, "ZPosition": { "type": "float", - "value": 0.01000165939331055 + "value": 0.010001659393310547 } }, { @@ -205174,15 +205174,15 @@ }, "YOrientation": { "type": "float", - "value": 0.04906884208321571 + "value": 0.049068842083215714 }, "YPosition": { "type": "float", - "value": 84.90957641601563 + "value": 84.90957641601562 }, "ZPosition": { "type": "float", - "value": 0.01000165939331055 + "value": 0.010001659393310547 } }, { @@ -205236,7 +205236,7 @@ }, "YOrientation": { "type": "float", - "value": 0.4713968634605408 + "value": 0.47139686346054077 }, "YPosition": { "type": "float", @@ -205244,7 +205244,7 @@ }, "ZPosition": { "type": "float", - "value": 0.01000165939331055 + "value": 0.010001659393310547 } }, { @@ -205298,7 +205298,7 @@ }, "YOrientation": { "type": "float", - "value": 0.04906884208321571 + "value": 0.049068842083215714 }, "YPosition": { "type": "float", @@ -205306,7 +205306,7 @@ }, "ZPosition": { "type": "float", - "value": 0.01000165939331055 + "value": 0.010001659393310547 } }, { @@ -205356,19 +205356,19 @@ }, "XPosition": { "type": "float", - "value": 98.11148071289063 + "value": 98.11148071289062 }, "YOrientation": { "type": "float", - "value": 0.04906884208321571 + "value": 0.049068842083215714 }, "YPosition": { "type": "float", - "value": 44.92950820922852 + "value": 44.929508209228516 }, "ZPosition": { "type": "float", - "value": 0.01000165939331055 + "value": 0.010001659393310547 } }, { @@ -205430,7 +205430,7 @@ }, "ZPosition": { "type": "float", - "value": 0.01000165939331055 + "value": 0.010001659393310547 } }, { @@ -205484,7 +205484,7 @@ }, "YOrientation": { "type": "float", - "value": 0.04906884208321571 + "value": 0.049068842083215714 }, "YPosition": { "type": "float", @@ -205492,7 +205492,7 @@ }, "ZPosition": { "type": "float", - "value": 0.01000165939331055 + "value": 0.010001659393310547 } }, { @@ -205554,7 +205554,7 @@ }, "ZPosition": { "type": "float", - "value": 0.01000165939331055 + "value": 0.010001659393310547 } }, { @@ -205608,7 +205608,7 @@ }, "YOrientation": { "type": "float", - "value": 0.04906884208321571 + "value": 0.049068842083215714 }, "YPosition": { "type": "float", @@ -205616,7 +205616,7 @@ }, "ZPosition": { "type": "float", - "value": 0.01000165939331055 + "value": 0.010001659393310547 } }, { @@ -205662,11 +205662,11 @@ }, "XOrientation": { "type": "float", - "value": 9.122689516516402e-005 + "value": 0.00009122689516516402 }, "XPosition": { "type": "float", - "value": 19.8552360534668 + "value": 19.855236053466797 }, "YOrientation": { "type": "float", @@ -205678,7 +205678,7 @@ }, "ZPosition": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -205732,7 +205732,7 @@ }, "YOrientation": { "type": "float", - "value": -0.24297234416008 + "value": -0.24297234416007996 }, "YPosition": { "type": "float", @@ -205740,7 +205740,7 @@ }, "ZPosition": { "type": "float", - "value": 0.01000165939331055 + "value": 0.010001659393310547 } }, { @@ -205786,11 +205786,11 @@ }, "XOrientation": { "type": "float", - "value": 8.240540773840621e-005 + "value": 0.00008240540773840621 }, "XPosition": { "type": "float", - "value": 297.4890747070313 + "value": 297.48907470703125 }, "YOrientation": { "type": "float", @@ -205848,7 +205848,7 @@ }, "XOrientation": { "type": "float", - "value": 8.240540773840621e-005 + "value": 0.00008240540773840621 }, "XPosition": { "type": "float", @@ -205860,7 +205860,7 @@ }, "YPosition": { "type": "float", - "value": 139.9877777099609 + "value": 139.98777770996094 }, "ZPosition": { "type": "float", @@ -205910,7 +205910,7 @@ }, "XOrientation": { "type": "float", - "value": 8.240540773840621e-005 + "value": 0.00008240540773840621 }, "XPosition": { "type": "float", @@ -205972,11 +205972,11 @@ }, "XOrientation": { "type": "float", - "value": 8.240540773840621e-005 + "value": 0.00008240540773840621 }, "XPosition": { "type": "float", - "value": 294.6321411132813 + "value": 294.63214111328125 }, "YOrientation": { "type": "float", @@ -205984,11 +205984,11 @@ }, "YPosition": { "type": "float", - "value": 142.3248443603516 + "value": 142.32484436035156 }, "ZPosition": { "type": "float", - "value": 10.00999259948731 + "value": 10.009992599487305 } }, { @@ -206034,7 +206034,7 @@ }, "XOrientation": { "type": "float", - "value": 8.240540773840621e-005 + "value": 0.00008240540773840621 }, "XPosition": { "type": "float", @@ -206050,7 +206050,7 @@ }, "ZPosition": { "type": "float", - "value": 10.00999259948731 + "value": 10.009992599487305 } }, { @@ -206096,7 +206096,7 @@ }, "XOrientation": { "type": "float", - "value": 8.240540773840621e-005 + "value": 0.00008240540773840621 }, "XPosition": { "type": "float", @@ -206158,7 +206158,7 @@ }, "XOrientation": { "type": "float", - "value": 8.240540773840621e-005 + "value": 0.00008240540773840621 }, "XPosition": { "type": "float", @@ -206220,7 +206220,7 @@ }, "XOrientation": { "type": "float", - "value": 8.240540773840621e-005 + "value": 0.00008240540773840621 }, "XPosition": { "type": "float", @@ -206232,7 +206232,7 @@ }, "YPosition": { "type": "float", - "value": 144.7649841308594 + "value": 144.76498413085938 }, "ZPosition": { "type": "float", @@ -206282,7 +206282,7 @@ }, "XOrientation": { "type": "float", - "value": 8.240540773840621e-005 + "value": 0.00008240540773840621 }, "XPosition": { "type": "float", @@ -206298,7 +206298,7 @@ }, "ZPosition": { "type": "float", - "value": 10.00000476837158 + "value": 10.000004768371582 } }, { @@ -206344,7 +206344,7 @@ }, "XOrientation": { "type": "float", - "value": 8.240540773840621e-005 + "value": 0.00008240540773840621 }, "XPosition": { "type": "float", @@ -206406,7 +206406,7 @@ }, "XOrientation": { "type": "float", - "value": 8.240540773840621e-005 + "value": 0.00008240540773840621 }, "XPosition": { "type": "float", @@ -206418,11 +206418,11 @@ }, "YPosition": { "type": "float", - "value": 146.9981384277344 + "value": 146.99813842773438 }, "ZPosition": { "type": "float", - "value": 10.00999259948731 + "value": 10.009992599487305 } }, { @@ -206468,7 +206468,7 @@ }, "XOrientation": { "type": "float", - "value": 8.240540773840621e-005 + "value": 0.00008240540773840621 }, "XPosition": { "type": "float", @@ -206530,11 +206530,11 @@ }, "XOrientation": { "type": "float", - "value": 8.240540773840621e-005 + "value": 0.00008240540773840621 }, "XPosition": { "type": "float", - "value": 294.2844848632813 + "value": 294.28448486328125 }, "YOrientation": { "type": "float", @@ -206542,7 +206542,7 @@ }, "YPosition": { "type": "float", - "value": 149.2735443115234 + "value": 149.27354431152344 }, "ZPosition": { "type": "float", @@ -206592,7 +206592,7 @@ }, "XOrientation": { "type": "float", - "value": 8.240540773840621e-005 + "value": 0.00008240540773840621 }, "XPosition": { "type": "float", @@ -206658,7 +206658,7 @@ }, "XPosition": { "type": "float", - "value": 22.88420486450195 + "value": 22.884204864501953 }, "YOrientation": { "type": "float", @@ -206666,11 +206666,11 @@ }, "YPosition": { "type": "float", - "value": 60.28314590454102 + "value": 60.283145904541016 }, "ZPosition": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -206716,7 +206716,7 @@ }, "XOrientation": { "type": "float", - "value": 8.240540773840621e-005 + "value": 0.00008240540773840621 }, "XPosition": { "type": "float", @@ -206778,7 +206778,7 @@ }, "XOrientation": { "type": "float", - "value": 8.240540773840621e-005 + "value": 0.00008240540773840621 }, "XPosition": { "type": "float", @@ -206790,7 +206790,7 @@ }, "YPosition": { "type": "float", - "value": 130.7925109863281 + "value": 130.79251098632812 }, "ZPosition": { "type": "float", @@ -206844,11 +206844,11 @@ }, "XPosition": { "type": "float", - "value": 134.4624938964844 + "value": 134.46249389648438 }, "YOrientation": { "type": "float", - "value": 0.04906884208321571 + "value": 0.049068842083215714 }, "YPosition": { "type": "float", @@ -206856,7 +206856,7 @@ }, "ZPosition": { "type": "float", - "value": 0.01000165939331055 + "value": 0.010001659393310547 } }, { @@ -206910,15 +206910,15 @@ }, "YOrientation": { "type": "float", - "value": 0.04906884208321571 + "value": 0.049068842083215714 }, "YPosition": { "type": "float", - "value": 125.0568161010742 + "value": 125.05681610107422 }, "ZPosition": { "type": "float", - "value": 0.01000165939331055 + "value": 0.010001659393310547 } }, { @@ -207100,11 +207100,11 @@ }, "YPosition": { "type": "float", - "value": 116.1208038330078 + "value": 116.12080383300781 }, "ZPosition": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -207158,7 +207158,7 @@ }, "YOrientation": { "type": "float", - "value": 2.102055759678478e-006 + "value": 0.0000021020557596784784 }, "YPosition": { "type": "float", @@ -207166,7 +207166,7 @@ }, "ZPosition": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -207220,15 +207220,15 @@ }, "YOrientation": { "type": "float", - "value": -0.24297234416008 + "value": -0.24297234416007996 }, "YPosition": { "type": "float", - "value": 144.6550598144531 + "value": 144.65505981445312 }, "ZPosition": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -207278,11 +207278,11 @@ }, "XPosition": { "type": "float", - "value": 129.1332397460938 + "value": 129.13323974609375 }, "YOrientation": { "type": "float", - "value": -0.2902717292308807 + "value": -0.29027172923088074 }, "YPosition": { "type": "float", @@ -207290,7 +207290,7 @@ }, "ZPosition": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -207352,7 +207352,7 @@ }, "ZPosition": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -207402,19 +207402,19 @@ }, "XPosition": { "type": "float", - "value": 209.2782287597656 + "value": 209.27822875976562 }, "YOrientation": { "type": "float", - "value": -0.3368528783321381 + "value": -0.33685287833213806 }, "YPosition": { "type": "float", - "value": 130.0499420166016 + "value": 130.04994201660156 }, "ZPosition": { "type": "float", - "value": 9.924173355102539e-006 + "value": 0.000009924173355102539 } }, { @@ -207468,7 +207468,7 @@ }, "YOrientation": { "type": "float", - "value": 2.102055759678478e-006 + "value": 0.0000021020557596784784 }, "YPosition": { "type": "float", @@ -207526,11 +207526,11 @@ }, "XPosition": { "type": "float", - "value": 210.9615783691406 + "value": 210.96157836914062 }, "YOrientation": { "type": "float", - "value": 2.102055759678478e-006 + "value": 0.0000021020557596784784 }, "YPosition": { "type": "float", @@ -207538,7 +207538,7 @@ }, "ZPosition": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -207588,11 +207588,11 @@ }, "XPosition": { "type": "float", - "value": 253.1958923339844 + "value": 253.19589233398438 }, "YOrientation": { "type": "float", - "value": 2.102055759678478e-006 + "value": 0.0000021020557596784784 }, "YPosition": { "type": "float", @@ -207654,11 +207654,11 @@ }, "YOrientation": { "type": "float", - "value": 2.102055759678478e-006 + "value": 0.0000021020557596784784 }, "YPosition": { "type": "float", - "value": 118.6048965454102 + "value": 118.60489654541016 }, "ZPosition": { "type": "float", @@ -207720,11 +207720,11 @@ }, "YPosition": { "type": "float", - "value": 118.6472473144531 + "value": 118.64724731445312 }, "ZPosition": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -207774,7 +207774,7 @@ }, "XPosition": { "type": "float", - "value": 74.89109039306641 + "value": 74.8910903930664 }, "YOrientation": { "type": "float", @@ -207782,7 +207782,7 @@ }, "YPosition": { "type": "float", - "value": 113.7589797973633 + "value": 113.75897979736328 }, "ZPosition": { "type": "float", @@ -207898,7 +207898,7 @@ }, "XPosition": { "type": "float", - "value": 75.01443481445313 + "value": 75.01443481445312 }, "YOrientation": { "type": "float", @@ -207968,11 +207968,11 @@ }, "YPosition": { "type": "float", - "value": 141.4392395019531 + "value": 141.43923950195312 }, "ZPosition": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -208030,7 +208030,7 @@ }, "YPosition": { "type": "float", - "value": 144.0324554443359 + "value": 144.03245544433594 }, "ZPosition": { "type": "float", @@ -208084,7 +208084,7 @@ }, "XPosition": { "type": "float", - "value": 125.5792083740234 + "value": 125.57920837402344 }, "YOrientation": { "type": "float", @@ -208092,11 +208092,11 @@ }, "YPosition": { "type": "float", - "value": 82.62184906005859 + "value": 82.6218490600586 }, "ZPosition": { "type": "float", - "value": 3.815086364746094 + "value": 3.8150863647460938 } }, { @@ -208158,7 +208158,7 @@ }, "ZPosition": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -208208,7 +208208,7 @@ }, "XPosition": { "type": "float", - "value": 126.3219757080078 + "value": 126.32197570800781 }, "YOrientation": { "type": "float", @@ -208220,7 +208220,7 @@ }, "ZPosition": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -208270,7 +208270,7 @@ }, "XPosition": { "type": "float", - "value": 123.1688919067383 + "value": 123.16889190673828 }, "YOrientation": { "type": "float", @@ -208332,7 +208332,7 @@ }, "XPosition": { "type": "float", - "value": 128.4331359863281 + "value": 128.43313598632812 }, "YOrientation": { "type": "float", @@ -208344,7 +208344,7 @@ }, "ZPosition": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -208402,7 +208402,7 @@ }, "YPosition": { "type": "float", - "value": 119.4131393432617 + "value": 119.41313934326172 }, "ZPosition": { "type": "float", @@ -208460,11 +208460,11 @@ }, "YOrientation": { "type": "float", - "value": -0.6715844869613648 + "value": -0.6715844869613647 }, "YPosition": { "type": "float", - "value": 120.5118560791016 + "value": 120.51185607910156 }, "ZPosition": { "type": "float", @@ -208514,7 +208514,7 @@ }, "XOrientation": { "type": "float", - "value": 8.240540773840621e-005 + "value": 0.00008240540773840621 }, "XPosition": { "type": "float", @@ -208526,7 +208526,7 @@ }, "YPosition": { "type": "float", - "value": 134.5717926025391 + "value": 134.57179260253906 }, "ZPosition": { "type": "float", @@ -208576,7 +208576,7 @@ }, "XOrientation": { "type": "float", - "value": 8.240540773840621e-005 + "value": 0.00008240540773840621 }, "XPosition": { "type": "float", @@ -208638,7 +208638,7 @@ }, "XOrientation": { "type": "float", - "value": 8.240540773840621e-005 + "value": 0.00008240540773840621 }, "XPosition": { "type": "float", @@ -208650,7 +208650,7 @@ }, "YPosition": { "type": "float", - "value": 120.6986846923828 + "value": 120.69868469238281 }, "ZPosition": { "type": "float", @@ -208700,7 +208700,7 @@ }, "XOrientation": { "type": "float", - "value": 8.240540773840621e-005 + "value": 0.00008240540773840621 }, "XPosition": { "type": "float", @@ -208762,7 +208762,7 @@ }, "XOrientation": { "type": "float", - "value": 8.240540773840621e-005 + "value": 0.00008240540773840621 }, "XPosition": { "type": "float", @@ -208774,7 +208774,7 @@ }, "YPosition": { "type": "float", - "value": 136.8322601318359 + "value": 136.83226013183594 }, "ZPosition": { "type": "float", @@ -208824,7 +208824,7 @@ }, "XOrientation": { "type": "float", - "value": 8.240540773840621e-005 + "value": 0.00008240540773840621 }, "XPosition": { "type": "float", @@ -208886,7 +208886,7 @@ }, "XOrientation": { "type": "float", - "value": 8.240540773840621e-005 + "value": 0.00008240540773840621 }, "XPosition": { "type": "float", @@ -208898,11 +208898,11 @@ }, "YPosition": { "type": "float", - "value": 136.9066009521484 + "value": 136.90660095214844 }, "ZPosition": { "type": "float", - "value": 10.00999259948731 + "value": 10.009992599487305 } }, { @@ -208948,11 +208948,11 @@ }, "XOrientation": { "type": "float", - "value": 8.240540773840621e-005 + "value": 0.00008240540773840621 }, "XPosition": { "type": "float", - "value": 302.0932006835938 + "value": 302.09320068359375 }, "YOrientation": { "type": "float", @@ -208960,7 +208960,7 @@ }, "YPosition": { "type": "float", - "value": 136.7957611083984 + "value": 136.79576110839844 }, "ZPosition": { "type": "float", @@ -209010,7 +209010,7 @@ }, "XOrientation": { "type": "float", - "value": 8.240540773840621e-005 + "value": 0.00008240540773840621 }, "XPosition": { "type": "float", @@ -209076,7 +209076,7 @@ }, "XPosition": { "type": "float", - "value": 23.05882835388184 + "value": 23.058828353881836 }, "YOrientation": { "type": "float", @@ -209088,7 +209088,7 @@ }, "ZPosition": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -209134,11 +209134,11 @@ }, "XOrientation": { "type": "float", - "value": 0.1950900852680206 + "value": 0.19509008526802063 }, "XPosition": { "type": "float", - "value": 18.51388359069824 + "value": 18.513883590698242 }, "YOrientation": { "type": "float", @@ -209150,7 +209150,7 @@ }, "ZPosition": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -209196,11 +209196,11 @@ }, "XOrientation": { "type": "float", - "value": -5.453329166016374e-008 + "value": -5.453329166016374e-8 }, "XPosition": { "type": "float", - "value": 16.9533576965332 + "value": 16.953357696533203 }, "YOrientation": { "type": "float", @@ -209212,7 +209212,7 @@ }, "ZPosition": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -209258,11 +209258,11 @@ }, "XOrientation": { "type": "float", - "value": -0.09801518172025681 + "value": -0.0980151817202568 }, "XPosition": { "type": "float", - "value": 23.92168045043945 + "value": 23.921680450439453 }, "YOrientation": { "type": "float", @@ -209274,7 +209274,7 @@ }, "ZPosition": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -209320,11 +209320,11 @@ }, "XOrientation": { "type": "float", - "value": -0.1950900852680206 + "value": -0.19509008526802063 }, "XPosition": { "type": "float", - "value": 22.4349536895752 + "value": 22.434953689575195 }, "YOrientation": { "type": "float", @@ -209332,11 +209332,11 @@ }, "YPosition": { "type": "float", - "value": 65.88718414306641 + "value": 65.8871841430664 }, "ZPosition": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -209382,11 +209382,11 @@ }, "XOrientation": { "type": "float", - "value": 0.09801518172025681 + "value": 0.0980151817202568 }, "XPosition": { "type": "float", - "value": 15.27710342407227 + "value": 15.277103424072266 }, "YOrientation": { "type": "float", @@ -209444,7 +209444,7 @@ }, "XOrientation": { "type": "float", - "value": -0.2429798394441605 + "value": -0.24297983944416046 }, "XPosition": { "type": "float", @@ -209506,7 +209506,7 @@ }, "XOrientation": { "type": "float", - "value": 0.146730363368988 + "value": 0.14673036336898804 }, "XPosition": { "type": "float", @@ -209522,7 +209522,7 @@ }, "ZPosition": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -209572,7 +209572,7 @@ }, "XPosition": { "type": "float", - "value": 17.42476654052734 + "value": 17.424766540527344 }, "YOrientation": { "type": "float", @@ -209584,7 +209584,7 @@ }, "ZPosition": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -209630,11 +209630,11 @@ }, "XOrientation": { "type": "float", - "value": -0.09801518172025681 + "value": -0.0980151817202568 }, "XPosition": { "type": "float", - "value": 23.62889099121094 + "value": 23.628890991210938 }, "YOrientation": { "type": "float", @@ -209646,7 +209646,7 @@ }, "ZPosition": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -209700,7 +209700,7 @@ }, "YOrientation": { "type": "float", - "value": 0.04906884208321571 + "value": 0.049068842083215714 }, "YPosition": { "type": "float", @@ -209754,7 +209754,7 @@ }, "XOrientation": { "type": "float", - "value": 8.240540773840621e-005 + "value": 0.00008240540773840621 }, "XPosition": { "type": "float", @@ -209766,11 +209766,11 @@ }, "YPosition": { "type": "float", - "value": 142.6193695068359 + "value": 142.61936950683594 }, "ZPosition": { "type": "float", - "value": 10.00999259948731 + "value": 10.009992599487305 } }, { @@ -209832,7 +209832,7 @@ }, "ZPosition": { "type": "float", - "value": 10.29999160766602 + "value": 10.299991607666016 } }, { @@ -209882,7 +209882,7 @@ }, "XPosition": { "type": "float", - "value": 20.02399063110352 + "value": 20.023990631103516 }, "YOrientation": { "type": "float", @@ -209894,7 +209894,7 @@ }, "ZPosition": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -209956,7 +209956,7 @@ }, "ZPosition": { "type": "float", - "value": 10.00999259948731 + "value": 10.009992599487305 } }, { @@ -210006,7 +210006,7 @@ }, "XPosition": { "type": "float", - "value": 23.69281387329102 + "value": 23.692813873291016 }, "YOrientation": { "type": "float", @@ -210014,11 +210014,11 @@ }, "YPosition": { "type": "float", - "value": 67.05307769775391 + "value": 67.0530776977539 }, "ZPosition": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -210068,11 +210068,11 @@ }, "XPosition": { "type": "float", - "value": 101.3142471313477 + "value": 101.31424713134766 }, "YOrientation": { "type": "float", - "value": 2.102055759678478e-006 + "value": 0.0000021020557596784784 }, "YPosition": { "type": "float", @@ -210080,7 +210080,7 @@ }, "ZPosition": { "type": "float", - "value": 0.01000165939331055 + "value": 0.010001659393310547 } }, { @@ -210130,19 +210130,19 @@ }, "XPosition": { "type": "float", - "value": 101.4618225097656 + "value": 101.46182250976562 }, "YOrientation": { "type": "float", - "value": 0.04906884208321571 + "value": 0.049068842083215714 }, "YPosition": { "type": "float", - "value": 125.218879699707 + "value": 125.21887969970703 }, "ZPosition": { "type": "float", - "value": 0.01000165939331055 + "value": 0.010001659393310547 } }, { @@ -210192,7 +210192,7 @@ }, "XPosition": { "type": "float", - "value": 27.72299194335938 + "value": 27.722991943359375 }, "YOrientation": { "type": "float", @@ -210200,11 +210200,11 @@ }, "YPosition": { "type": "float", - "value": 28.68914413452148 + "value": 28.689144134521484 }, "ZPosition": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -210254,7 +210254,7 @@ }, "XPosition": { "type": "float", - "value": 34.50045013427734 + "value": 34.500450134277344 }, "YOrientation": { "type": "float", @@ -210266,7 +210266,7 @@ }, "ZPosition": { "type": "float", - "value": 0.01000165939331055 + "value": 0.010001659393310547 } }, { @@ -210316,7 +210316,7 @@ }, "XPosition": { "type": "float", - "value": 27.65406799316406 + "value": 27.654067993164062 }, "YOrientation": { "type": "float", @@ -210378,7 +210378,7 @@ }, "XPosition": { "type": "float", - "value": 28.60791397094727 + "value": 28.607913970947266 }, "YOrientation": { "type": "float", @@ -210440,7 +210440,7 @@ }, "XPosition": { "type": "float", - "value": 21.99523544311523 + "value": 21.995235443115234 }, "YOrientation": { "type": "float", @@ -210452,7 +210452,7 @@ }, "ZPosition": { "type": "float", - "value": 0.01000034715980291 + "value": 0.010000347159802914 } }, { @@ -210560,7 +210560,7 @@ }, "XOrientation": { "type": "float", - "value": 8.240540773840621e-005 + "value": 0.00008240540773840621 }, "XPosition": { "type": "float", @@ -210622,7 +210622,7 @@ }, "XOrientation": { "type": "float", - "value": 8.240540773840621e-005 + "value": 0.00008240540773840621 }, "XPosition": { "type": "float", @@ -210634,11 +210634,11 @@ }, "YPosition": { "type": "float", - "value": 131.5388031005859 + "value": 131.53880310058594 }, "ZPosition": { "type": "float", - "value": 10.00999259948731 + "value": 10.009992599487305 } }, { @@ -210684,7 +210684,7 @@ }, "XOrientation": { "type": "float", - "value": 8.240540773840621e-005 + "value": 0.00008240540773840621 }, "XPosition": { "type": "float", @@ -210696,7 +210696,7 @@ }, "YPosition": { "type": "float", - "value": 131.3234710693359 + "value": 131.32347106933594 }, "ZPosition": { "type": "float", @@ -210746,7 +210746,7 @@ }, "XOrientation": { "type": "float", - "value": 8.240540773840621e-005 + "value": 0.00008240540773840621 }, "XPosition": { "type": "float", @@ -210758,7 +210758,7 @@ }, "YPosition": { "type": "float", - "value": 131.2158050537109 + "value": 131.21580505371094 }, "ZPosition": { "type": "float", @@ -210808,11 +210808,11 @@ }, "XOrientation": { "type": "float", - "value": -5.021889592171647e-005 + "value": -0.000050218895921716467 }, "XPosition": { "type": "float", - "value": 21.17760276794434 + "value": 21.177602767944336 }, "YOrientation": { "type": "float", @@ -210820,11 +210820,11 @@ }, "YPosition": { "type": "float", - "value": 72.50161743164063 + "value": 72.50161743164062 }, "ZPosition": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -210870,7 +210870,7 @@ }, "XOrientation": { "type": "float", - "value": -5.021889592171647e-005 + "value": -0.000050218895921716467 }, "XPosition": { "type": "float", @@ -210886,7 +210886,7 @@ }, "ZPosition": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -210932,7 +210932,7 @@ }, "XOrientation": { "type": "float", - "value": 8.240540773840621e-005 + "value": 0.00008240540773840621 }, "XPosition": { "type": "float", @@ -210944,7 +210944,7 @@ }, "YPosition": { "type": "float", - "value": 120.7864532470703 + "value": 120.78645324707031 }, "ZPosition": { "type": "float", @@ -210994,7 +210994,7 @@ }, "XOrientation": { "type": "float", - "value": 8.240540773840621e-005 + "value": 0.00008240540773840621 }, "XPosition": { "type": "float", @@ -211006,7 +211006,7 @@ }, "YPosition": { "type": "float", - "value": 123.1585998535156 + "value": 123.15859985351562 }, "ZPosition": { "type": "float", @@ -211056,7 +211056,7 @@ }, "XOrientation": { "type": "float", - "value": 8.240540773840621e-005 + "value": 0.00008240540773840621 }, "XPosition": { "type": "float", @@ -211068,7 +211068,7 @@ }, "YPosition": { "type": "float", - "value": 125.9280090332031 + "value": 125.92800903320312 }, "ZPosition": { "type": "float", @@ -211118,7 +211118,7 @@ }, "XOrientation": { "type": "float", - "value": 8.240540773840621e-005 + "value": 0.00008240540773840621 }, "XPosition": { "type": "float", @@ -211130,7 +211130,7 @@ }, "YPosition": { "type": "float", - "value": 123.3765335083008 + "value": 123.37653350830078 }, "ZPosition": { "type": "float", @@ -211180,7 +211180,7 @@ }, "XOrientation": { "type": "float", - "value": 8.240540773840621e-005 + "value": 0.00008240540773840621 }, "XPosition": { "type": "float", @@ -211192,7 +211192,7 @@ }, "YPosition": { "type": "float", - "value": 125.9717330932617 + "value": 125.97173309326172 }, "ZPosition": { "type": "float", @@ -211246,7 +211246,7 @@ }, "XPosition": { "type": "float", - "value": 300.2611694335938 + "value": 300.26116943359375 }, "YOrientation": { "type": "float", @@ -211254,7 +211254,7 @@ }, "YPosition": { "type": "float", - "value": 121.193717956543 + "value": 121.19371795654297 }, "ZPosition": { "type": "float", @@ -211316,7 +211316,7 @@ }, "YPosition": { "type": "float", - "value": 122.1803741455078 + "value": 122.18037414550781 }, "ZPosition": { "type": "float", @@ -211370,7 +211370,7 @@ }, "XPosition": { "type": "float", - "value": 301.9424438476563 + "value": 301.94244384765625 }, "YOrientation": { "type": "float", @@ -211378,7 +211378,7 @@ }, "YPosition": { "type": "float", - "value": 122.7699279785156 + "value": 122.76992797851562 }, "ZPosition": { "type": "float", @@ -211440,7 +211440,7 @@ }, "YPosition": { "type": "float", - "value": 123.7665634155273 + "value": 123.76656341552734 }, "ZPosition": { "type": "float", @@ -211490,7 +211490,7 @@ }, "XOrientation": { "type": "float", - "value": 8.240540773840621e-005 + "value": 0.00008240540773840621 }, "XPosition": { "type": "float", @@ -211502,7 +211502,7 @@ }, "YPosition": { "type": "float", - "value": 139.9773864746094 + "value": 139.97738647460938 }, "ZPosition": { "type": "float", @@ -211552,7 +211552,7 @@ }, "XOrientation": { "type": "float", - "value": 8.240540773840621e-005 + "value": 0.00008240540773840621 }, "XPosition": { "type": "float", @@ -211564,7 +211564,7 @@ }, "YPosition": { "type": "float", - "value": 142.4458160400391 + "value": 142.44581604003906 }, "ZPosition": { "type": "float", @@ -211614,7 +211614,7 @@ }, "XOrientation": { "type": "float", - "value": 8.240540773840621e-005 + "value": 0.00008240540773840621 }, "XPosition": { "type": "float", @@ -211676,7 +211676,7 @@ }, "XOrientation": { "type": "float", - "value": 8.240540773840621e-005 + "value": 0.00008240540773840621 }, "XPosition": { "type": "float", @@ -211688,7 +211688,7 @@ }, "YPosition": { "type": "float", - "value": 146.9880676269531 + "value": 146.98806762695312 }, "ZPosition": { "type": "float", @@ -211738,7 +211738,7 @@ }, "XOrientation": { "type": "float", - "value": 8.240540773840621e-005 + "value": 0.00008240540773840621 }, "XPosition": { "type": "float", @@ -211750,7 +211750,7 @@ }, "YPosition": { "type": "float", - "value": 149.2247924804688 + "value": 149.22479248046875 }, "ZPosition": { "type": "float", @@ -211812,11 +211812,11 @@ }, "YPosition": { "type": "float", - "value": 78.71714019775391 + "value": 78.7171401977539 }, "ZPosition": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -211866,7 +211866,7 @@ }, "XPosition": { "type": "float", - "value": 50.75588989257813 + "value": 50.755889892578125 }, "YOrientation": { "type": "float", @@ -211878,7 +211878,7 @@ }, "ZPosition": { "type": "float", - "value": 9.5367431640625e-007 + "value": 0.00000095367431640625 } }, { @@ -211932,7 +211932,7 @@ }, "YOrientation": { "type": "float", - "value": -0.04908833652734757 + "value": -0.049088336527347565 }, "YPosition": { "type": "float", @@ -211940,7 +211940,7 @@ }, "ZPosition": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -211990,11 +211990,11 @@ }, "XPosition": { "type": "float", - "value": 47.35665130615234 + "value": 47.356651306152344 }, "YOrientation": { "type": "float", - "value": -0.04908845573663712 + "value": -0.049088455736637115 }, "YPosition": { "type": "float", @@ -212002,7 +212002,7 @@ }, "ZPosition": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -212053,7 +212053,7 @@ }, "YOrientation": { "type": "float", - "value": 2.102055759678478e-006 + "value": 0.0000021020557596784784 }, "YPosition": { "type": "float", @@ -212061,7 +212061,7 @@ }, "ZPosition": { "type": "float", - "value": 0.01000165939331055 + "value": 0.010001659393310547 } }, { @@ -212114,7 +212114,7 @@ }, "XPosition": { "type": "float", - "value": 24.9633960723877 + "value": 24.963396072387695 }, "YOrientation": { "type": "float", @@ -212179,7 +212179,7 @@ }, "XPosition": { "type": "float", - "value": 19.97733306884766 + "value": 19.977333068847656 }, "YOrientation": { "type": "float", @@ -212187,11 +212187,11 @@ }, "YPosition": { "type": "float", - "value": 63.82648086547852 + "value": 63.826480865478516 }, "ZPosition": { "type": "float", - "value": 0.1999893188476563 + "value": 0.19998931884765625 } }, { @@ -212256,7 +212256,7 @@ }, "ZPosition": { "type": "float", - "value": 0.01000165939331055 + "value": 0.010001659393310547 } }, { @@ -212317,7 +212317,7 @@ }, "YPosition": { "type": "float", - "value": 125.0378341674805 + "value": 125.03783416748047 }, "ZPosition": { "type": "float", @@ -212386,7 +212386,7 @@ }, "ZPosition": { "type": "float", - "value": 0.01000022701919079 + "value": 0.010000227019190788 } }, { @@ -212512,7 +212512,7 @@ }, "YPosition": { "type": "float", - "value": 32.70679092407227 + "value": 32.706790924072266 }, "ZPosition": { "type": "float", @@ -212569,7 +212569,7 @@ }, "XPosition": { "type": "float", - "value": 14.85008525848389 + "value": 14.850085258483887 }, "YOrientation": { "type": "float", @@ -212581,7 +212581,7 @@ }, "ZPosition": { "type": "float", - "value": 3.492916584014893 + "value": 3.4929165840148926 } }, { @@ -212700,11 +212700,11 @@ }, "YOrientation": { "type": "float", - "value": 0.04906884208321571 + "value": 0.049068842083215714 }, "YPosition": { "type": "float", - "value": 122.9169540405273 + "value": 122.91695404052734 }, "ZPosition": { "type": "float", @@ -212762,7 +212762,7 @@ }, "YOrientation": { "type": "float", - "value": 0.04906884208321571 + "value": 0.049068842083215714 }, "YPosition": { "type": "float", @@ -212882,19 +212882,19 @@ }, "XPosition": { "type": "float", - "value": 254.3473815917969 + "value": 254.34738159179688 }, "YOrientation": { "type": "float", - "value": 0.04906884208321571 + "value": 0.049068842083215714 }, "YPosition": { "type": "float", - "value": 43.45290374755859 + "value": 43.452903747558594 }, "ZPosition": { "type": "float", - "value": 6.800003051757813 + "value": 6.8000030517578125 } }, { @@ -212956,7 +212956,7 @@ }, "ZPosition": { "type": "float", - "value": 11.80000686645508 + "value": 11.800006866455078 } }, { @@ -213002,11 +213002,11 @@ }, "XOrientation": { "type": "float", - "value": 2.162934151783702e-006 + "value": 0.000002162934151783702 }, "XPosition": { "type": "float", - "value": 296.1555786132813 + "value": 296.15557861328125 }, "YOrientation": { "type": "float", @@ -213018,7 +213018,7 @@ }, "ZPosition": { "type": "float", - "value": 10.29999160766602 + "value": 10.299991607666016 } }, { @@ -213064,7 +213064,7 @@ }, "XOrientation": { "type": "float", - "value": 2.162934151783702e-006 + "value": 0.000002162934151783702 }, "XPosition": { "type": "float", @@ -213080,7 +213080,7 @@ }, "ZPosition": { "type": "float", - "value": 10.29999160766602 + "value": 10.299991607666016 } }, { @@ -213130,11 +213130,11 @@ }, "XPosition": { "type": "float", - "value": 296.4910278320313 + "value": 296.49102783203125 }, "YOrientation": { "type": "float", - "value": -0.6715844869613648 + "value": -0.6715844869613647 }, "YPosition": { "type": "float", @@ -213196,11 +213196,11 @@ }, "YOrientation": { "type": "float", - "value": -0.6715844869613648 + "value": -0.6715844869613647 }, "YPosition": { "type": "float", - "value": 117.9087829589844 + "value": 117.90878295898438 }, "ZPosition": { "type": "float", @@ -213262,7 +213262,7 @@ }, "YPosition": { "type": "float", - "value": 125.4159393310547 + "value": 125.41593933105469 }, "ZPosition": { "type": "float", @@ -213324,7 +213324,7 @@ }, "YPosition": { "type": "float", - "value": 124.2560882568359 + "value": 124.25608825683594 }, "ZPosition": { "type": "float", @@ -213448,7 +213448,7 @@ }, "YPosition": { "type": "float", - "value": 125.8690338134766 + "value": 125.86903381347656 }, "ZPosition": { "type": "float", diff --git a/_module/git/desolateanddespa.git.json b/_module/git/desolateanddespa.git.json index 2e5eb64..7bdcbd3 100644 --- a/_module/git/desolateanddespa.git.json +++ b/_module/git/desolateanddespa.git.json @@ -664,7 +664,7 @@ }, "XPosition": { "type": "float", - "value": 20.76999473571777 + "value": 20.769994735717773 }, "YOrientation": { "type": "float", @@ -672,7 +672,7 @@ }, "YPosition": { "type": "float", - "value": 19.48442077636719 + "value": 19.484420776367188 }, "ZPosition": { "type": "float", @@ -1297,7 +1297,7 @@ }, "XPosition": { "type": "float", - "value": 29.05035018920898 + "value": 29.050350189208984 }, "YOrientation": { "type": "float", @@ -2563,7 +2563,7 @@ }, "XPosition": { "type": "float", - "value": 36.24361419677734 + "value": 36.243614196777344 }, "YOrientation": { "type": "float", @@ -2571,7 +2571,7 @@ }, "YPosition": { "type": "float", - "value": 6.99939775466919 + "value": 6.9993977546691895 }, "ZPosition": { "type": "float", @@ -3566,7 +3566,7 @@ }, "XPosition": { "type": "float", - "value": 37.59464263916016 + "value": 37.594642639160156 }, "YOrientation": { "type": "float", @@ -3574,11 +3574,11 @@ }, "YPosition": { "type": "float", - "value": 47.08803558349609 + "value": 47.088035583496094 }, "ZPosition": { "type": "float", - "value": 10.02328968048096 + "value": 10.023289680480957 } }, { @@ -4577,7 +4577,7 @@ }, "YPosition": { "type": "float", - "value": 70.35720825195313 + "value": 70.35720825195312 }, "ZPosition": { "type": "float", @@ -5657,7 +5657,7 @@ }, "XPosition": { "type": "float", - "value": 75.99844360351563 + "value": 75.99844360351562 }, "YOrientation": { "type": "float", @@ -5665,7 +5665,7 @@ }, "YPosition": { "type": "float", - "value": 50.68719863891602 + "value": 50.687198638916016 }, "ZPosition": { "type": "float", @@ -6394,7 +6394,7 @@ }, "Bearing": { "type": "float", - "value": -1.570794820785523 + "value": -1.5707948207855225 }, "CloseLockDC": { "type": "byte", @@ -6588,7 +6588,7 @@ }, "Y": { "type": "float", - "value": 12.88000011444092 + "value": 12.880000114440918 }, "Z": { "type": "float", @@ -6822,11 +6822,11 @@ }, "X": { "type": "float", - "value": 39.69971084594727 + "value": 39.699710845947266 }, "Y": { "type": "float", - "value": 49.18886566162109 + "value": 49.188865661621094 }, "Z": { "type": "float", @@ -6888,7 +6888,7 @@ }, "PitchVariation": { "type": "float", - "value": 0.2000000029802322 + "value": 0.20000000298023224 }, "Positional": { "type": "byte", @@ -6948,15 +6948,15 @@ }, "XPosition": { "type": "float", - "value": 35.77315521240234 + "value": 35.773155212402344 }, "YPosition": { "type": "float", - "value": 28.92969131469727 + "value": 28.929691314697266 }, "ZPosition": { "type": "float", - "value": -1.899999856948853 + "value": -1.8999998569488525 } }, { @@ -7009,7 +7009,7 @@ }, "PitchVariation": { "type": "float", - "value": 0.2000000029802322 + "value": 0.20000000298023224 }, "Positional": { "type": "byte", @@ -7069,7 +7069,7 @@ }, "XPosition": { "type": "float", - "value": 2.996747970581055 + "value": 2.9967479705810547 }, "YPosition": { "type": "float", @@ -7077,7 +7077,7 @@ }, "ZPosition": { "type": "float", - "value": 1.588324546813965 + "value": 1.5883245468139648 } }, { @@ -7130,7 +7130,7 @@ }, "PitchVariation": { "type": "float", - "value": 0.2000000029802322 + "value": 0.20000000298023224 }, "Positional": { "type": "byte", @@ -7251,7 +7251,7 @@ }, "PitchVariation": { "type": "float", - "value": 0.300000011920929 + "value": 0.30000001192092896 }, "Positional": { "type": "byte", @@ -7374,7 +7374,7 @@ }, "XPosition": { "type": "float", - "value": 39.02038192749023 + "value": 39.020381927490234 }, "YPosition": { "type": "float", @@ -7435,7 +7435,7 @@ }, "PitchVariation": { "type": "float", - "value": 0.300000011920929 + "value": 0.30000001192092896 }, "Positional": { "type": "byte", @@ -7562,11 +7562,11 @@ }, "YPosition": { "type": "float", - "value": 55.63458633422852 + "value": 55.634586334228516 }, "ZPosition": { "type": "float", - "value": 11.29591751098633 + "value": 11.295917510986328 } }, { @@ -7619,7 +7619,7 @@ }, "PitchVariation": { "type": "float", - "value": 0.300000011920929 + "value": 0.30000001192092896 }, "Positional": { "type": "byte", @@ -7742,11 +7742,11 @@ }, "XPosition": { "type": "float", - "value": 7.411387443542481 + "value": 7.4113874435424805 }, "YPosition": { "type": "float", - "value": 46.72670745849609 + "value": 46.726707458496094 }, "ZPosition": { "type": "float", @@ -7803,7 +7803,7 @@ }, "PitchVariation": { "type": "float", - "value": 0.300000011920929 + "value": 0.30000001192092896 }, "Positional": { "type": "byte", @@ -8051,7 +8051,7 @@ }, "YPosition": { "type": "float", - "value": 13.41970634460449 + "value": 13.419706344604492 }, "ZPosition": { "type": "float", @@ -8176,7 +8176,7 @@ }, "ZPosition": { "type": "float", - "value": 2.099999904632568 + "value": 2.0999999046325684 } } ] diff --git a/_module/git/ey_dpcon_erewood.git.json b/_module/git/ey_dpcon_erewood.git.json index 2883ed0..d2ddbb1 100644 --- a/_module/git/ey_dpcon_erewood.git.json +++ b/_module/git/ey_dpcon_erewood.git.json @@ -282,7 +282,7 @@ }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -497,7 +497,7 @@ }, "X": { "type": "float", - "value": 42.82106781005859 + "value": 42.821067810058594 }, "Y": { "type": "float", @@ -505,7 +505,7 @@ }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -728,7 +728,7 @@ }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -1166,15 +1166,15 @@ }, "X": { "type": "float", - "value": 37.77213287353516 + "value": 37.772132873535156 }, "Y": { "type": "float", - "value": 12.39786338806152 + "value": 12.397863388061523 }, "Z": { "type": "float", - "value": -1.937150955200195e-007 + "value": -0.00000019371509552001953 } }, { @@ -1389,15 +1389,15 @@ }, "X": { "type": "float", - "value": 43.51470565795898 + "value": 43.514705657958984 }, "Y": { "type": "float", - "value": 14.01102447509766 + "value": 14.011024475097656 }, "Z": { "type": "float", - "value": 0.04150157049298286 + "value": 0.041501570492982864 } }, { @@ -1616,7 +1616,7 @@ }, "Y": { "type": "float", - "value": 13.1573600769043 + "value": 13.157360076904297 }, "Z": { "type": "float", @@ -1843,7 +1843,7 @@ }, "Z": { "type": "float", - "value": 2.384185791015625e-007 + "value": 0.0000002384185791015625 } }, { @@ -2058,11 +2058,11 @@ }, "X": { "type": "float", - "value": 39.49908065795898 + "value": 39.499080657958984 }, "Y": { "type": "float", - "value": 42.78000640869141 + "value": 42.780006408691406 }, "Z": { "type": "float", @@ -2281,7 +2281,7 @@ }, "X": { "type": "float", - "value": 44.82220077514648 + "value": 44.822200775146484 }, "Y": { "type": "float", @@ -2289,7 +2289,7 @@ }, "Z": { "type": "float", - "value": -4.76837158203125e-007 + "value": -0.000000476837158203125 } }, { @@ -2512,7 +2512,7 @@ }, "Z": { "type": "float", - "value": 0.0429927408695221 + "value": 0.042992740869522095 } }, { @@ -2728,7 +2728,7 @@ }, "X": { "type": "float", - "value": 41.14682006835938 + "value": 41.146820068359375 }, "Y": { "type": "float", @@ -2959,7 +2959,7 @@ }, "Z": { "type": "float", - "value": 1.001358032226563e-005 + "value": 0.000010013580322265625 } }, { @@ -3174,15 +3174,15 @@ }, "X": { "type": "float", - "value": 15.25651454925537 + "value": 15.256514549255371 }, "Y": { "type": "float", - "value": 13.30093288421631 + "value": 13.300932884216309 }, "Z": { "type": "float", - "value": 0.4138407707214356 + "value": 0.41384077072143555 } }, { @@ -3405,7 +3405,7 @@ }, "Z": { "type": "float", - "value": 2.384185791015625e-007 + "value": 0.0000002384185791015625 } }, { @@ -3620,15 +3620,15 @@ }, "X": { "type": "float", - "value": 27.46503829956055 + "value": 27.465038299560547 }, "Y": { "type": "float", - "value": 25.76974487304688 + "value": 25.769744873046875 }, "Z": { "type": "float", - "value": 0.3609549999237061 + "value": 0.36095499992370605 } }, { @@ -3843,11 +3843,11 @@ }, "X": { "type": "float", - "value": 27.54284286499023 + "value": 27.542842864990234 }, "Y": { "type": "float", - "value": 25.75577354431152 + "value": 25.755773544311523 }, "Z": { "type": "float", @@ -4070,7 +4070,7 @@ }, "Y": { "type": "float", - "value": 24.61386680603027 + "value": 24.613866806030273 }, "Z": { "type": "float", @@ -4289,7 +4289,7 @@ }, "X": { "type": "float", - "value": 10.4328727722168 + "value": 10.432872772216797 }, "Y": { "type": "float", @@ -4297,7 +4297,7 @@ }, "Z": { "type": "float", - "value": 0.0183146595954895 + "value": 0.018314659595489502 } }, { @@ -4512,11 +4512,11 @@ }, "X": { "type": "float", - "value": 10.39583396911621 + "value": 10.395833969116211 }, "Y": { "type": "float", - "value": 37.53082656860352 + "value": 37.530826568603516 }, "Z": { "type": "float", @@ -4735,7 +4735,7 @@ }, "X": { "type": "float", - "value": 10.88762187957764 + "value": 10.887621879577637 }, "Y": { "type": "float", @@ -4762,7 +4762,7 @@ }, "Bearing": { "type": "float", - "value": 1.816232323646545 + "value": 1.8162323236465454 }, "BodyBag": { "type": "byte", @@ -4966,7 +4966,7 @@ }, "Z": { "type": "float", - "value": 1.001358032226563e-005 + "value": 0.000010013580322265625 } }, { @@ -5185,11 +5185,11 @@ }, "Y": { "type": "float", - "value": 40.45883941650391 + "value": 40.458839416503906 }, "Z": { "type": "float", - "value": 1.192092895507813e-007 + "value": 0.00000011920928955078125 } }, { @@ -5408,11 +5408,11 @@ }, "Y": { "type": "float", - "value": 43.67095565795898 + "value": 43.670955657958984 }, "Z": { "type": "float", - "value": -2.384185791015625e-007 + "value": -0.0000002384185791015625 } }, { @@ -5631,11 +5631,11 @@ }, "Y": { "type": "float", - "value": 42.22009658813477 + "value": 42.220096588134766 }, "Z": { "type": "float", - "value": -2.384185791015625e-007 + "value": -0.0000002384185791015625 } }, { @@ -5850,11 +5850,11 @@ }, "X": { "type": "float", - "value": 45.83562850952148 + "value": 45.835628509521484 }, "Y": { "type": "float", - "value": 25.5269947052002 + "value": 25.526994705200195 }, "Z": { "type": "float", @@ -6081,7 +6081,7 @@ }, "Z": { "type": "float", - "value": 2.384185791015625e-007 + "value": 0.0000002384185791015625 } }, { @@ -6296,7 +6296,7 @@ }, "X": { "type": "float", - "value": 29.97814559936523 + "value": 29.978145599365234 }, "Y": { "type": "float", @@ -6519,7 +6519,7 @@ }, "X": { "type": "float", - "value": 31.14458847045898 + "value": 31.144588470458984 }, "Y": { "type": "float", @@ -6750,7 +6750,7 @@ }, "Z": { "type": "float", - "value": -5.960464477539063e-008 + "value": -5.960464477539063e-8 } }, { @@ -6973,7 +6973,7 @@ }, "Z": { "type": "float", - "value": 1.402871608734131 + "value": 1.4028716087341309 } }, { @@ -7188,7 +7188,7 @@ }, "X": { "type": "float", - "value": 29.47326850891113 + "value": 29.473268508911133 }, "Y": { "type": "float", @@ -7413,7 +7413,7 @@ }, "X": { "type": "float", - "value": 20.85512161254883 + "value": 20.855121612548828 }, "Y": { "type": "float", @@ -7539,7 +7539,7 @@ }, "XPosition": { "type": "float", - "value": 42.78046035766602 + "value": 42.780460357666016 }, "YPosition": { "type": "float", @@ -7664,7 +7664,7 @@ }, "YPosition": { "type": "float", - "value": 20.61979675292969 + "value": 20.619796752929688 }, "ZPosition": { "type": "float", @@ -7785,7 +7785,7 @@ }, "YPosition": { "type": "float", - "value": 36.72332382202148 + "value": 36.723323822021484 }, "ZPosition": { "type": "float", @@ -7842,7 +7842,7 @@ }, "PitchVariation": { "type": "float", - "value": 0.2000000029802322 + "value": 0.20000000298023224 }, "Positional": { "type": "byte", @@ -7916,11 +7916,11 @@ }, "XPosition": { "type": "float", - "value": 14.50231838226318 + "value": 14.502318382263184 }, "YPosition": { "type": "float", - "value": 30.95841979980469 + "value": 30.958419799804688 }, "ZPosition": { "type": "float", @@ -7977,7 +7977,7 @@ }, "PitchVariation": { "type": "float", - "value": 0.2000000029802322 + "value": 0.20000000298023224 }, "Positional": { "type": "byte", @@ -8059,7 +8059,7 @@ }, "ZPosition": { "type": "float", - "value": 1.500010013580322 + "value": 1.5000100135803223 } }, { @@ -8172,15 +8172,15 @@ }, "XPosition": { "type": "float", - "value": 20.66150856018066 + "value": 20.661508560180664 }, "YPosition": { "type": "float", - "value": 11.34990882873535 + "value": 11.349908828735352 }, "ZPosition": { "type": "float", - "value": 1.50374698638916 + "value": 1.5037469863891602 } } ] @@ -8242,7 +8242,7 @@ }, "XPosition": { "type": "float", - "value": 20.94911575317383 + "value": 20.949115753173828 }, "YOrientation": { "type": "float", @@ -8250,7 +8250,7 @@ }, "YPosition": { "type": "float", - "value": 11.40368461608887 + "value": 11.403684616088867 }, "ZPosition": { "type": "float", diff --git a/_module/git/frostedpits.git.json b/_module/git/frostedpits.git.json index 4e61823..a700a97 100644 --- a/_module/git/frostedpits.git.json +++ b/_module/git/frostedpits.git.json @@ -1821,7 +1821,7 @@ }, "ZPosition": { "type": "float", - "value": 10.01521682739258 + "value": 10.015216827392578 } }, { @@ -2706,7 +2706,7 @@ }, "YPosition": { "type": "float", - "value": 11.91598606109619 + "value": 11.915986061096191 }, "ZPosition": { "type": "float", @@ -5761,7 +5761,7 @@ }, "XPosition": { "type": "float", - "value": 12.07069492340088 + "value": 12.070694923400879 }, "YOrientation": { "type": "float", @@ -5769,11 +5769,11 @@ }, "YPosition": { "type": "float", - "value": 2.657718181610107 + "value": 2.6577181816101074 }, "ZPosition": { "type": "float", - "value": 15.00350952148438 + "value": 15.003509521484375 } }, { @@ -6856,7 +6856,7 @@ }, "YPosition": { "type": "float", - "value": 45.96895599365234 + "value": 45.968955993652344 }, "ZPosition": { "type": "float", @@ -7851,7 +7851,7 @@ }, "XPosition": { "type": "float", - "value": 59.94933700561523 + "value": 59.949337005615234 }, "YOrientation": { "type": "float", @@ -8854,7 +8854,7 @@ }, "XPosition": { "type": "float", - "value": 1.767436027526856 + "value": 1.7674360275268555 }, "YOrientation": { "type": "float", @@ -8862,7 +8862,7 @@ }, "YPosition": { "type": "float", - "value": 40.20157623291016 + "value": 40.201576232910156 }, "ZPosition": { "type": "float", @@ -10490,7 +10490,7 @@ }, "XPosition": { "type": "float", - "value": 44.25854873657227 + "value": 44.258548736572266 }, "YOrientation": { "type": "float", @@ -10498,11 +10498,11 @@ }, "YPosition": { "type": "float", - "value": 22.75637054443359 + "value": 22.756370544433594 }, "ZPosition": { "type": "float", - "value": 0.02256107330322266 + "value": 0.022561073303222656 } }, { @@ -11135,7 +11135,7 @@ }, "ZPosition": { "type": "float", - "value": 9.573996067047119e-006 + "value": 0.000009573996067047119 } }, { @@ -11756,7 +11756,7 @@ }, "XPosition": { "type": "float", - "value": 29.31690406799316 + "value": 29.316904067993164 }, "YOrientation": { "type": "float", @@ -11768,7 +11768,7 @@ }, "ZPosition": { "type": "float", - "value": 9.715557098388672e-006 + "value": 0.000009715557098388672 } }, { @@ -12397,11 +12397,11 @@ }, "YPosition": { "type": "float", - "value": 30.9926872253418 + "value": 30.992687225341797 }, "ZPosition": { "type": "float", - "value": 9.715557098388672e-006 + "value": 0.000009715557098388672 } }, { @@ -13058,7 +13058,7 @@ }, "Bearing": { "type": "float", - "value": -3.14158821105957 + "value": -3.1415882110595703 }, "CloseLockDC": { "type": "byte", @@ -13256,7 +13256,7 @@ }, "Z": { "type": "float", - "value": 9.560000419616699 + "value": 9.5600004196167 } }, { @@ -13958,7 +13958,7 @@ }, "ZPosition": { "type": "float", - "value": 11.45095634460449 + "value": 11.450956344604492 } }, { @@ -14079,7 +14079,7 @@ }, "ZPosition": { "type": "float", - "value": 1.499998569488525 + "value": 1.4999985694885254 } }, { @@ -14132,7 +14132,7 @@ }, "PitchVariation": { "type": "float", - "value": 0.300000011920929 + "value": 0.30000001192092896 }, "Positional": { "type": "byte", @@ -14255,11 +14255,11 @@ }, "XPosition": { "type": "float", - "value": 50.90689849853516 + "value": 50.906898498535156 }, "YPosition": { "type": "float", - "value": 75.14443969726563 + "value": 75.14443969726562 }, "ZPosition": { "type": "float", @@ -14316,7 +14316,7 @@ }, "PitchVariation": { "type": "float", - "value": 0.300000011920929 + "value": 0.30000001192092896 }, "Positional": { "type": "byte", @@ -14443,11 +14443,11 @@ }, "YPosition": { "type": "float", - "value": 3.519330024719238 + "value": 3.5193300247192383 }, "ZPosition": { "type": "float", - "value": 11.08508682250977 + "value": 11.085086822509766 } }, { @@ -14500,7 +14500,7 @@ }, "PitchVariation": { "type": "float", - "value": 0.300000011920929 + "value": 0.30000001192092896 }, "Positional": { "type": "byte", @@ -14623,7 +14623,7 @@ }, "XPosition": { "type": "float", - "value": 10.31266021728516 + "value": 10.312660217285156 }, "YPosition": { "type": "float", @@ -14684,7 +14684,7 @@ }, "PitchVariation": { "type": "float", - "value": 0.300000011920929 + "value": 0.30000001192092896 }, "Positional": { "type": "byte", @@ -14811,7 +14811,7 @@ }, "YPosition": { "type": "float", - "value": 31.39634704589844 + "value": 31.396347045898438 }, "ZPosition": { "type": "float", @@ -14928,15 +14928,15 @@ }, "XPosition": { "type": "float", - "value": 19.8398551940918 + "value": 19.839855194091797 }, "YPosition": { "type": "float", - "value": 39.80170059204102 + "value": 39.801700592041016 }, "ZPosition": { "type": "float", - "value": 2.100000143051148 + "value": 2.1000001430511475 } }, { @@ -15057,7 +15057,7 @@ }, "ZPosition": { "type": "float", - "value": 1.799998044967651 + "value": 1.7999980449676514 } }, { @@ -15110,7 +15110,7 @@ }, "PitchVariation": { "type": "float", - "value": 0.2000000029802322 + "value": 0.20000000298023224 }, "Positional": { "type": "byte", @@ -15192,7 +15192,7 @@ }, "ZPosition": { "type": "float", - "value": 6.351634025573731 + "value": 6.3516340255737305 } }, { @@ -15245,7 +15245,7 @@ }, "PitchVariation": { "type": "float", - "value": 0.2000000029802322 + "value": 0.20000000298023224 }, "Positional": { "type": "byte", @@ -15327,7 +15327,7 @@ }, "ZPosition": { "type": "float", - "value": 11.42726707458496 + "value": 11.427267074584961 } }, { @@ -15380,7 +15380,7 @@ }, "PitchVariation": { "type": "float", - "value": 0.2000000029802322 + "value": 0.20000000298023224 }, "Positional": { "type": "byte", @@ -15503,7 +15503,7 @@ }, "XPosition": { "type": "float", - "value": 15.50753593444824 + "value": 15.507535934448242 }, "YPosition": { "type": "float", @@ -15511,7 +15511,7 @@ }, "ZPosition": { "type": "float", - "value": 12.21456909179688 + "value": 12.214569091796875 } }, { @@ -15564,7 +15564,7 @@ }, "PitchVariation": { "type": "float", - "value": 0.2000000029802322 + "value": 0.20000000298023224 }, "Positional": { "type": "byte", @@ -15695,7 +15695,7 @@ }, "ZPosition": { "type": "float", - "value": 11.88608932495117 + "value": 11.886089324951172 } }, { @@ -15748,7 +15748,7 @@ }, "PitchVariation": { "type": "float", - "value": 0.2000000029802322 + "value": 0.20000000298023224 }, "Positional": { "type": "byte", @@ -15815,11 +15815,11 @@ }, "XPosition": { "type": "float", - "value": 60.30273818969727 + "value": 60.302738189697266 }, "YPosition": { "type": "float", - "value": 73.92276000976563 + "value": 73.92276000976562 }, "ZPosition": { "type": "float", @@ -15864,22 +15864,22 @@ }, "PointY": { "type": "float", - "value": -13.18122100830078 + "value": -13.181221008300781 }, "PointZ": { "type": "float", - "value": 0.02500003017485142 + "value": 0.025000030174851418 } }, { "__struct_id": 3, "PointX": { "type": "float", - "value": 10.10875701904297 + "value": 10.108757019042969 }, "PointY": { "type": "float", - "value": -12.62993621826172 + "value": -12.629936218261719 }, "PointZ": { "type": "float", @@ -15890,11 +15890,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 10.02248382568359 + "value": 10.022483825683594 }, "PointY": { "type": "float", - "value": -1.512523651123047 + "value": -1.5125236511230469 }, "PointZ": { "type": "float", @@ -15909,11 +15909,11 @@ }, "PointY": { "type": "float", - "value": -0.02091973647475243 + "value": -0.020919736474752426 }, "PointZ": { "type": "float", - "value": 0.02500003017485142 + "value": 0.025000030174851418 } } ] @@ -16019,7 +16019,7 @@ }, "XPosition": { "type": "float", - "value": 54.11525726318359 + "value": 54.115257263183594 }, "YOrientation": { "type": "float", @@ -16067,11 +16067,11 @@ }, "PointY": { "type": "float", - "value": -0.04742050170898438 + "value": -0.047420501708984375 }, "PointZ": { "type": "float", - "value": 0.3250000178813934 + "value": 0.32500001788139343 } }, { @@ -16082,11 +16082,11 @@ }, "PointY": { "type": "float", - "value": 0.1060066223144531 + "value": 0.10600662231445312 }, "PointZ": { "type": "float", - "value": 0.3250000178813934 + "value": 0.32500001788139343 } }, { @@ -16101,14 +16101,14 @@ }, "PointZ": { "type": "float", - "value": 0.3249999582767487 + "value": 0.32499995827674866 } }, { "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01214790344238281 + "value": -0.012147903442382812 }, "PointY": { "type": "float", @@ -16116,7 +16116,7 @@ }, "PointZ": { "type": "float", - "value": 0.3249999582767487 + "value": 0.32499995827674866 } }, { @@ -16131,7 +16131,7 @@ }, "PointZ": { "type": "float", - "value": 0.3250000178813934 + "value": 0.32500001788139343 } } ] @@ -16312,7 +16312,7 @@ }, "YOrientation": { "type": "float", - "value": 0.04906884208321571 + "value": 0.049068842083215714 }, "YPosition": { "type": "float", @@ -16370,7 +16370,7 @@ }, "XPosition": { "type": "float", - "value": 59.26678848266602 + "value": 59.266788482666016 }, "YOrientation": { "type": "float", @@ -16432,7 +16432,7 @@ }, "XPosition": { "type": "float", - "value": 23.06696701049805 + "value": 23.066967010498047 }, "YOrientation": { "type": "float", @@ -16444,7 +16444,7 @@ }, "ZPosition": { "type": "float", - "value": 0.3000019192695618 + "value": 0.30000191926956177 } } ] diff --git a/_module/git/frozentimes.git.json b/_module/git/frozentimes.git.json index cb3e977..eb270d6 100644 --- a/_module/git/frozentimes.git.json +++ b/_module/git/frozentimes.git.json @@ -2436,7 +2436,7 @@ }, "XPosition": { "type": "float", - "value": 32.63839721679688 + "value": 32.638397216796875 }, "YOrientation": { "type": "float", @@ -2448,7 +2448,7 @@ }, "ZPosition": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } } ] @@ -2906,7 +2906,7 @@ }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -3129,7 +3129,7 @@ }, "Z": { "type": "float", - "value": -7.450580596923828e-008 + "value": -7.450580596923828e-8 } }, { @@ -4825,11 +4825,11 @@ }, "X": { "type": "float", - "value": 50.71347808837891 + "value": 50.713478088378906 }, "Y": { "type": "float", - "value": 63.52807998657227 + "value": 63.528079986572266 }, "Z": { "type": "float", @@ -5251,11 +5251,11 @@ }, "X": { "type": "float", - "value": 49.41516494750977 + "value": 49.415164947509766 }, "Y": { "type": "float", - "value": 61.46741104125977 + "value": 61.467411041259766 }, "Z": { "type": "float", @@ -5681,7 +5681,7 @@ }, "Y": { "type": "float", - "value": 60.10503768920898 + "value": 60.105037689208984 }, "Z": { "type": "float", @@ -6103,11 +6103,11 @@ }, "X": { "type": "float", - "value": 50.68542098999023 + "value": 50.685420989990234 }, "Y": { "type": "float", - "value": 60.95910263061523 + "value": 60.959102630615234 }, "Z": { "type": "float", @@ -6963,7 +6963,7 @@ }, "Z": { "type": "float", - "value": 4.994669914245606 + "value": 4.9946699142456055 } }, { @@ -7807,7 +7807,7 @@ }, "X": { "type": "float", - "value": 60.74097061157227 + "value": 60.740970611572266 }, "Y": { "type": "float", @@ -8663,7 +8663,7 @@ }, "Y": { "type": "float", - "value": 70.36428070068359 + "value": 70.3642807006836 }, "Z": { "type": "float", @@ -9511,7 +9511,7 @@ }, "X": { "type": "float", - "value": 57.73852157592773 + "value": 57.738521575927734 }, "Y": { "type": "float", @@ -9937,7 +9937,7 @@ }, "X": { "type": "float", - "value": 58.82275772094727 + "value": 58.822757720947266 }, "Y": { "type": "float", @@ -10367,7 +10367,7 @@ }, "Y": { "type": "float", - "value": 69.34561157226563 + "value": 69.34561157226562 }, "Z": { "type": "float", @@ -10793,7 +10793,7 @@ }, "Y": { "type": "float", - "value": 71.84975433349609 + "value": 71.8497543334961 }, "Z": { "type": "float", @@ -11641,7 +11641,7 @@ }, "X": { "type": "float", - "value": 50.43076324462891 + "value": 50.430763244628906 }, "Y": { "type": "float", @@ -12071,7 +12071,7 @@ }, "Y": { "type": "float", - "value": 72.38181304931641 + "value": 72.3818130493164 }, "Z": { "type": "float", @@ -12923,7 +12923,7 @@ }, "Y": { "type": "float", - "value": 70.99416351318359 + "value": 70.9941635131836 }, "Z": { "type": "float", @@ -13345,11 +13345,11 @@ }, "X": { "type": "float", - "value": 52.44454956054688 + "value": 52.444549560546875 }, "Y": { "type": "float", - "value": 68.77835083007813 + "value": 68.77835083007812 }, "Z": { "type": "float", @@ -13771,11 +13771,11 @@ }, "X": { "type": "float", - "value": 54.10591888427734 + "value": 54.105918884277344 }, "Y": { "type": "float", - "value": 70.72537231445313 + "value": 70.72537231445312 }, "Z": { "type": "float", @@ -14201,11 +14201,11 @@ }, "Y": { "type": "float", - "value": 72.56570434570313 + "value": 72.56570434570312 }, "Z": { "type": "float", - "value": 5.000926017761231 + "value": 5.0009260177612305 } }, { @@ -14631,7 +14631,7 @@ }, "Z": { "type": "float", - "value": 5.382365226745606 + "value": 5.3823652267456055 } }, { @@ -16550,11 +16550,11 @@ }, "X": { "type": "float", - "value": 23.66611480712891 + "value": 23.666114807128906 }, "Y": { "type": "float", - "value": 60.83400726318359 + "value": 60.834007263183594 }, "Z": { "type": "float", @@ -16773,15 +16773,15 @@ }, "X": { "type": "float", - "value": 21.79962348937988 + "value": 21.799623489379883 }, "Y": { "type": "float", - "value": 60.82422256469727 + "value": 60.824222564697266 }, "Z": { "type": "float", - "value": 2.980232238769531e-008 + "value": 2.9802322387695312e-8 } }, { @@ -16996,7 +16996,7 @@ }, "X": { "type": "float", - "value": 28.06956291198731 + "value": 28.069562911987305 }, "Y": { "type": "float", @@ -17004,7 +17004,7 @@ }, "Z": { "type": "float", - "value": -3.725290298461914e-008 + "value": -3.725290298461914e-8 } }, { @@ -17442,7 +17442,7 @@ }, "X": { "type": "float", - "value": 54.67763519287109 + "value": 54.677635192871094 }, "Y": { "type": "float", @@ -17671,7 +17671,7 @@ }, "Y": { "type": "float", - "value": 25.12516403198242 + "value": 25.125164031982422 }, "Z": { "type": "float", @@ -17733,7 +17733,7 @@ }, "PitchVariation": { "type": "float", - "value": 0.2000000029802322 + "value": 0.20000000298023224 }, "Positional": { "type": "byte", @@ -17797,11 +17797,11 @@ }, "YPosition": { "type": "float", - "value": 47.05260848999023 + "value": 47.052608489990234 }, "ZPosition": { "type": "float", - "value": 6.509417057037354 + "value": 6.5094170570373535 } }, { @@ -17854,7 +17854,7 @@ }, "PitchVariation": { "type": "float", - "value": 0.2000000029802322 + "value": 0.20000000298023224 }, "Positional": { "type": "byte", @@ -17996,7 +17996,7 @@ }, "PitchVariation": { "type": "float", - "value": 0.2000000029802322 + "value": 0.20000000298023224 }, "Positional": { "type": "byte", @@ -18063,11 +18063,11 @@ }, "XPosition": { "type": "float", - "value": 60.23028182983398 + "value": 60.230281829833984 }, "YPosition": { "type": "float", - "value": 56.69518661499023 + "value": 56.695186614990234 }, "ZPosition": { "type": "float", @@ -18143,7 +18143,7 @@ }, "ZPosition": { "type": "float", - "value": 9.298324584960938e-006 + "value": 0.000009298324584960938 } }, { @@ -18190,7 +18190,7 @@ }, "XPosition": { "type": "float", - "value": 32.41534042358398 + "value": 32.415340423583984 }, "YOrientation": { "type": "float", @@ -18198,7 +18198,7 @@ }, "YPosition": { "type": "float", - "value": 48.59499359130859 + "value": 48.594993591308594 }, "ZPosition": { "type": "float", @@ -18261,7 +18261,7 @@ }, "ZPosition": { "type": "float", - "value": -4.470348358154297e-008 + "value": -4.470348358154297e-8 } }, { @@ -18379,7 +18379,7 @@ }, "ZPosition": { "type": "float", - "value": 9.804964065551758e-006 + "value": 0.000009804964065551758 } }, { @@ -18426,7 +18426,7 @@ }, "XPosition": { "type": "float", - "value": 64.37526702880859 + "value": 64.3752670288086 }, "YOrientation": { "type": "float", @@ -18493,11 +18493,11 @@ }, "YPosition": { "type": "float", - "value": 27.59383583068848 + "value": 27.593835830688477 }, "ZPosition": { "type": "float", - "value": 0.02670013159513474 + "value": 0.026700131595134735 } }, { @@ -18556,7 +18556,7 @@ }, "ZPosition": { "type": "float", - "value": 1.192092895507813e-007 + "value": 0.00000011920928955078125 } } ] diff --git a/_module/git/indoors.git.json b/_module/git/indoors.git.json index 5211b10..e705eb8 100644 --- a/_module/git/indoors.git.json +++ b/_module/git/indoors.git.json @@ -951,7 +951,7 @@ }, "XPosition": { "type": "float", - "value": 16.4455451965332 + "value": 16.445545196533203 }, "YOrientation": { "type": "float", @@ -963,7 +963,7 @@ }, "ZPosition": { "type": "float", - "value": 0.01000192761421204 + "value": 0.010001927614212036 } }, { @@ -1389,7 +1389,7 @@ }, "XPosition": { "type": "float", - "value": 17.34995841979981 + "value": 17.349958419799805 }, "YOrientation": { "type": "float", @@ -1397,11 +1397,11 @@ }, "YPosition": { "type": "float", - "value": 39.59548950195313 + "value": 39.595489501953125 }, "ZPosition": { "type": "float", - "value": 0.01000192761421204 + "value": 0.010001927614212036 } }, { @@ -1839,7 +1839,7 @@ }, "ZPosition": { "type": "float", - "value": 9.804964065551758e-006 + "value": 0.000009804964065551758 } }, { @@ -2275,11 +2275,11 @@ }, "YPosition": { "type": "float", - "value": 39.95796966552734 + "value": 39.957969665527344 }, "ZPosition": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -2881,11 +2881,11 @@ }, "XOrientation": { "type": "float", - "value": -0.4713959991931915 + "value": -0.47139599919319153 }, "XPosition": { "type": "float", - "value": 16.69151878356934 + "value": 16.691518783569336 }, "YOrientation": { "type": "float", @@ -2893,11 +2893,11 @@ }, "YPosition": { "type": "float", - "value": 40.64319229125977 + "value": 40.643192291259766 }, "ZPosition": { "type": "float", - "value": 0.002744793891906738 + "value": 0.0027447938919067383 } }, { @@ -3333,11 +3333,11 @@ }, "YPosition": { "type": "float", - "value": 25.89376258850098 + "value": 25.893762588500977 }, "ZPosition": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } } ] @@ -3361,7 +3361,7 @@ }, "Bearing": { "type": "float", - "value": 1.570794224739075 + "value": 1.5707942247390747 }, "CloseLockDC": { "type": "byte", @@ -3579,7 +3579,7 @@ }, "Bearing": { "type": "float", - "value": -1.570794224739075 + "value": -1.5707942247390747 }, "CloseLockDC": { "type": "byte", @@ -4015,7 +4015,7 @@ }, "Bearing": { "type": "float", - "value": -3.141571998596191 + "value": -3.1415719985961914 }, "CloseLockDC": { "type": "byte", @@ -4660,15 +4660,15 @@ }, "X": { "type": "float", - "value": 11.32180595397949 + "value": 11.321805953979492 }, "Y": { "type": "float", - "value": 21.55188369750977 + "value": 21.551883697509766 }, "Z": { "type": "float", - "value": 1.937150955200195e-007 + "value": 0.00000019371509552001953 } }, { @@ -4883,7 +4883,7 @@ }, "X": { "type": "float", - "value": 11.37644004821777 + "value": 11.376440048217773 }, "Y": { "type": "float", @@ -4891,7 +4891,7 @@ }, "Z": { "type": "float", - "value": -4.470348358154297e-008 + "value": -4.470348358154297e-8 } }, { @@ -5106,15 +5106,15 @@ }, "X": { "type": "float", - "value": 12.3099479675293 + "value": 12.309947967529297 }, "Y": { "type": "float", - "value": 22.02158737182617 + "value": 22.021587371826172 }, "Z": { "type": "float", - "value": 2.533197402954102e-007 + "value": 0.00000025331974029541016 } }, { @@ -5133,7 +5133,7 @@ }, "Bearing": { "type": "float", - "value": -1.668970465660095 + "value": -1.6689704656600952 }, "BodyBag": { "type": "byte", @@ -5333,11 +5333,11 @@ }, "Y": { "type": "float", - "value": 37.51885604858398 + "value": 37.518856048583984 }, "Z": { "type": "float", - "value": 9.804964065551758e-006 + "value": 0.000009804964065551758 } }, { @@ -5552,11 +5552,11 @@ }, "X": { "type": "float", - "value": 15.72288417816162 + "value": 15.722884178161621 }, "Y": { "type": "float", - "value": 33.77282333374023 + "value": 33.772823333740234 }, "Z": { "type": "float", @@ -5775,7 +5775,7 @@ }, "X": { "type": "float", - "value": 14.26524066925049 + "value": 14.265240669250488 }, "Y": { "type": "float", @@ -5802,7 +5802,7 @@ }, "Bearing": { "type": "float", - "value": 0.4417861104011536 + "value": 0.44178611040115356 }, "BodyBag": { "type": "byte", @@ -5998,7 +5998,7 @@ }, "X": { "type": "float", - "value": 14.95293045043945 + "value": 14.952930450439453 }, "Y": { "type": "float", @@ -6006,7 +6006,7 @@ }, "Z": { "type": "float", - "value": 0.01001301407814026 + "value": 0.010013014078140259 } }, { @@ -6025,7 +6025,7 @@ }, "Bearing": { "type": "float", - "value": -1.227183341979981 + "value": -1.2271833419799805 }, "BodyBag": { "type": "byte", @@ -6221,11 +6221,11 @@ }, "X": { "type": "float", - "value": 16.39132690429688 + "value": 16.391326904296875 }, "Y": { "type": "float", - "value": 32.93005752563477 + "value": 32.930057525634766 }, "Z": { "type": "float", @@ -6452,7 +6452,7 @@ }, "Z": { "type": "float", - "value": 0.01001301407814026 + "value": 0.010013014078140259 } }, { @@ -6667,7 +6667,7 @@ }, "X": { "type": "float", - "value": 14.30737495422363 + "value": 14.307374954223633 }, "Y": { "type": "float", @@ -6890,11 +6890,11 @@ }, "X": { "type": "float", - "value": 13.69851493835449 + "value": 13.698514938354492 }, "Y": { "type": "float", - "value": 36.96881484985352 + "value": 36.968814849853516 }, "Z": { "type": "float", @@ -6917,7 +6917,7 @@ }, "Bearing": { "type": "float", - "value": -1.030834794044495 + "value": -1.0308347940444946 }, "BodyBag": { "type": "byte", @@ -7113,7 +7113,7 @@ }, "X": { "type": "float", - "value": 15.20685577392578 + "value": 15.206855773925781 }, "Y": { "type": "float", @@ -7336,7 +7336,7 @@ }, "X": { "type": "float", - "value": 12.30538368225098 + "value": 12.305383682250977 }, "Y": { "type": "float", @@ -7586,7 +7586,7 @@ }, "Bearing": { "type": "float", - "value": -1.570794224739075 + "value": -1.5707942247390747 }, "BodyBag": { "type": "byte", @@ -7790,7 +7790,7 @@ }, "Z": { "type": "float", - "value": 9.804964065551758e-006 + "value": 0.000009804964065551758 } }, { @@ -7809,7 +7809,7 @@ }, "Bearing": { "type": "float", - "value": -1.619882822036743 + "value": -1.6198828220367432 }, "BodyBag": { "type": "byte", @@ -8005,7 +8005,7 @@ }, "X": { "type": "float", - "value": 17.98209190368652 + "value": 17.982091903686523 }, "Y": { "type": "float", @@ -8013,7 +8013,7 @@ }, "Z": { "type": "float", - "value": 9.804964065551758e-006 + "value": 0.000009804964065551758 } }, { @@ -8228,15 +8228,15 @@ }, "X": { "type": "float", - "value": 18.32018852233887 + "value": 18.320188522338867 }, "Y": { "type": "float", - "value": 31.50180244445801 + "value": 31.501802444458008 }, "Z": { "type": "float", - "value": 1.490116119384766e-007 + "value": 0.00000014901161193847656 } }, { @@ -8459,7 +8459,7 @@ }, "Z": { "type": "float", - "value": 9.804964065551758e-006 + "value": 0.000009804964065551758 } }, { @@ -8674,7 +8674,7 @@ }, "X": { "type": "float", - "value": 15.92291164398193 + "value": 15.922911643981934 }, "Y": { "type": "float", @@ -8701,7 +8701,7 @@ }, "Bearing": { "type": "float", - "value": -1.718057990074158 + "value": -1.7180579900741577 }, "BodyBag": { "type": "byte", @@ -8897,15 +8897,15 @@ }, "X": { "type": "float", - "value": 18.12838554382324 + "value": 18.128385543823242 }, "Y": { "type": "float", - "value": 33.30038452148438 + "value": 33.300384521484375 }, "Z": { "type": "float", - "value": 9.804964065551758e-006 + "value": 0.000009804964065551758 } }, { @@ -9126,11 +9126,11 @@ }, "Y": { "type": "float", - "value": 22.68393516540527 + "value": 22.683935165405273 }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -9349,11 +9349,11 @@ }, "Y": { "type": "float", - "value": 23.12483406066895 + "value": 23.124834060668945 }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -9372,7 +9372,7 @@ }, "Bearing": { "type": "float", - "value": 1.816225171089172 + "value": 1.8162251710891724 }, "BodyBag": { "type": "byte", @@ -9572,11 +9572,11 @@ }, "Y": { "type": "float", - "value": 23.02927970886231 + "value": 23.029279708862305 }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -9595,7 +9595,7 @@ }, "Bearing": { "type": "float", - "value": -1.570794224739075 + "value": -1.5707942247390747 }, "BodyBag": { "type": "byte", @@ -10538,15 +10538,15 @@ }, "X": { "type": "float", - "value": 57.64109039306641 + "value": 57.641090393066406 }, "Y": { "type": "float", - "value": 27.6055793762207 + "value": 27.605579376220703 }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -10565,7 +10565,7 @@ }, "Bearing": { "type": "float", - "value": -1.570794224739075 + "value": -1.5707942247390747 }, "BodyBag": { "type": "byte", @@ -10765,11 +10765,11 @@ }, "Y": { "type": "float", - "value": 33.76062393188477 + "value": 33.760623931884766 }, "Z": { "type": "float", - "value": 9.775161743164063e-006 + "value": 0.000009775161743164062 } }, { @@ -10788,7 +10788,7 @@ }, "Bearing": { "type": "float", - "value": -1.570794224739075 + "value": -1.5707942247390747 }, "BodyBag": { "type": "byte", @@ -10984,15 +10984,15 @@ }, "X": { "type": "float", - "value": 57.77249145507813 + "value": 57.772491455078125 }, "Y": { "type": "float", - "value": 36.33428573608398 + "value": 36.334285736083984 }, "Z": { "type": "float", - "value": 9.775161743164063e-006 + "value": 0.000009775161743164062 } }, { @@ -11011,7 +11011,7 @@ }, "Bearing": { "type": "float", - "value": -1.570794224739075 + "value": -1.5707942247390747 }, "BodyBag": { "type": "byte", @@ -11215,7 +11215,7 @@ }, "Z": { "type": "float", - "value": 9.775161743164063e-006 + "value": 0.000009775161743164062 } }, { @@ -11234,7 +11234,7 @@ }, "Bearing": { "type": "float", - "value": 1.570794224739075 + "value": 1.5707942247390747 }, "BodyBag": { "type": "byte", @@ -11438,7 +11438,7 @@ }, "Z": { "type": "float", - "value": 9.775161743164063e-006 + "value": 0.000009775161743164062 } }, { @@ -11457,7 +11457,7 @@ }, "Bearing": { "type": "float", - "value": 1.570794224739075 + "value": 1.5707942247390747 }, "BodyBag": { "type": "byte", @@ -11661,7 +11661,7 @@ }, "Z": { "type": "float", - "value": 9.775161743164063e-006 + "value": 0.000009775161743164062 } }, { @@ -11680,7 +11680,7 @@ }, "Bearing": { "type": "float", - "value": 1.570794224739075 + "value": 1.5707942247390747 }, "BodyBag": { "type": "byte", @@ -12547,7 +12547,7 @@ }, "Z": { "type": "float", - "value": 9.775161743164063e-006 + "value": 0.000009775161743164062 } }, { @@ -12766,11 +12766,11 @@ }, "Y": { "type": "float", - "value": 31.7138786315918 + "value": 31.713878631591797 }, "Z": { "type": "float", - "value": 9.775161743164063e-006 + "value": 0.000009775161743164062 } }, { @@ -12989,11 +12989,11 @@ }, "Y": { "type": "float", - "value": 44.83316802978516 + "value": 44.833168029785156 }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -13210,7 +13210,7 @@ }, "X": { "type": "float", - "value": 52.12631988525391 + "value": 52.126319885253906 }, "Y": { "type": "float", @@ -13218,7 +13218,7 @@ }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -13437,11 +13437,11 @@ }, "Y": { "type": "float", - "value": 31.6517219543457 + "value": 31.651721954345703 }, "Z": { "type": "float", - "value": 9.775161743164063e-006 + "value": 0.000009775161743164062 } }, { @@ -13660,11 +13660,11 @@ }, "Y": { "type": "float", - "value": 21.75034713745117 + "value": 21.750347137451172 }, "Z": { "type": "float", - "value": 1.120006084442139 + "value": 1.1200060844421387 } }, { @@ -13683,7 +13683,7 @@ }, "Bearing": { "type": "float", - "value": 1.570794224739075 + "value": 1.5707942247390747 }, "BodyBag": { "type": "byte", @@ -13881,7 +13881,7 @@ }, "X": { "type": "float", - "value": 11.28923797607422 + "value": 11.289237976074219 }, "Y": { "type": "float", @@ -13889,7 +13889,7 @@ }, "Z": { "type": "float", - "value": 1.002848148345947e-005 + "value": 0.000010028481483459473 } } ] @@ -14007,7 +14007,7 @@ }, "XPosition": { "type": "float", - "value": 17.99111747741699 + "value": 17.991117477416992 }, "YPosition": { "type": "float", @@ -14068,7 +14068,7 @@ }, "PitchVariation": { "type": "float", - "value": 0.2000000029802322 + "value": 0.20000000298023224 }, "Positional": { "type": "byte", @@ -14143,7 +14143,7 @@ }, "ZPosition": { "type": "float", - "value": 1.509999752044678 + "value": 1.5099997520446777 } }, { @@ -14196,7 +14196,7 @@ }, "PitchVariation": { "type": "float", - "value": 0.2000000029802322 + "value": 0.20000000298023224 }, "Positional": { "type": "byte", @@ -14256,7 +14256,7 @@ }, "XPosition": { "type": "float", - "value": 17.20079040527344 + "value": 17.200790405273438 }, "YPosition": { "type": "float", @@ -14264,7 +14264,7 @@ }, "ZPosition": { "type": "float", - "value": 1.509982228279114 + "value": 1.5099822282791138 } } ] @@ -14323,7 +14323,7 @@ }, "XOrientation": { "type": "float", - "value": -0.9807849526405335 + "value": -0.9807849526405334 }, "XPosition": { "type": "float", @@ -14335,11 +14335,11 @@ }, "YPosition": { "type": "float", - "value": 12.53040313720703 + "value": 12.530403137207031 }, "ZPosition": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -14393,7 +14393,7 @@ }, "YOrientation": { "type": "float", - "value": 2.102055759678478e-006 + "value": 0.0000021020557596784784 }, "YPosition": { "type": "float", @@ -14401,7 +14401,7 @@ }, "ZPosition": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -14451,11 +14451,11 @@ }, "XPosition": { "type": "float", - "value": 45.18999862670898 + "value": 45.189998626708984 }, "YOrientation": { "type": "float", - "value": -0.09801758080720902 + "value": -0.09801758080720901 }, "YPosition": { "type": "float", @@ -14463,7 +14463,7 @@ }, "ZPosition": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -14525,7 +14525,7 @@ }, "ZPosition": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -14587,7 +14587,7 @@ }, "ZPosition": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } } ] diff --git a/_module/git/limbo001.git.json b/_module/git/limbo001.git.json index 9fa4158..46b1a05 100644 --- a/_module/git/limbo001.git.json +++ b/_module/git/limbo001.git.json @@ -280,7 +280,7 @@ }, "X": { "type": "float", - "value": 39.99505233764648 + "value": 39.995052337646484 }, "Y": { "type": "float", @@ -288,7 +288,7 @@ }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -307,7 +307,7 @@ }, "Bearing": { "type": "float", - "value": 3.14158821105957 + "value": 3.1415882110595703 }, "BodyBag": { "type": "byte", @@ -515,7 +515,7 @@ }, "Z": { "type": "float", - "value": -8.381903171539307e-009 + "value": -8.381903171539307e-9 } }, { @@ -1278,7 +1278,7 @@ }, "ZPosition": { "type": "float", - "value": -5.7220458984375e-006 + "value": -0.0000057220458984375 } }, { diff --git a/_module/git/prc_maze_01.git.json b/_module/git/prc_maze_01.git.json index 999380a..9b921fd 100644 --- a/_module/git/prc_maze_01.git.json +++ b/_module/git/prc_maze_01.git.json @@ -114,7 +114,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.003210067749023438 + "value": 0.0032100677490234375 }, "PointY": { "type": "float", @@ -133,11 +133,11 @@ }, "PointY": { "type": "float", - "value": -4.02381181716919 + "value": -4.0238118171691895 }, "PointZ": { "type": "float", - "value": 0.2707840502262116 + "value": 0.27078405022621155 } }, { @@ -278,7 +278,7 @@ }, "XPosition": { "type": "float", - "value": 22.81622695922852 + "value": 22.816226959228516 }, "YOrientation": { "type": "float", @@ -286,7 +286,7 @@ }, "YPosition": { "type": "float", - "value": 51.43787002563477 + "value": 51.437870025634766 }, "ZOrientation": { "type": "float", @@ -294,7 +294,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000000476837158 + "value": 0.20000004768371582 } }, { @@ -330,14 +330,14 @@ }, "PointZ": { "type": "float", - "value": 0.2349531948566437 + "value": 0.23495319485664368 } }, { "__struct_id": 3, "PointX": { "type": "float", - "value": 0.003210067749023438 + "value": 0.0032100677490234375 }, "PointY": { "type": "float", @@ -356,7 +356,7 @@ }, "PointY": { "type": "float", - "value": -4.02381181716919 + "value": -4.0238118171691895 }, "PointZ": { "type": "float", @@ -501,7 +501,7 @@ }, "XPosition": { "type": "float", - "value": 153.1847076416016 + "value": 153.18470764160156 }, "YOrientation": { "type": "float", @@ -517,7 +517,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000000476837158 + "value": 0.20000004768371582 } }, { @@ -560,7 +560,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.003210067749023438 + "value": 0.0032100677490234375 }, "PointY": { "type": "float", @@ -579,11 +579,11 @@ }, "PointY": { "type": "float", - "value": -4.02381181716919 + "value": -4.0238118171691895 }, "PointZ": { "type": "float", - "value": 0.3958608210086823 + "value": 0.39586082100868225 } }, { @@ -740,7 +740,7 @@ }, "ZPosition": { "type": "float", - "value": 0.200000524520874 + "value": 0.20000052452087402 } }, { @@ -783,7 +783,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.003210067749023438 + "value": 0.0032100677490234375 }, "PointY": { "type": "float", @@ -802,7 +802,7 @@ }, "PointY": { "type": "float", - "value": -4.02381181716919 + "value": -4.0238118171691895 }, "PointZ": { "type": "float", @@ -947,7 +947,7 @@ }, "XPosition": { "type": "float", - "value": 7.382128238677979 + "value": 7.3821282386779785 }, "YOrientation": { "type": "float", @@ -963,7 +963,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000000476837158 + "value": 0.20000004768371582 } }, { @@ -1006,7 +1006,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.003210067749023438 + "value": 0.0032100677490234375 }, "PointY": { "type": "float", @@ -1025,7 +1025,7 @@ }, "PointY": { "type": "float", - "value": -4.02381181716919 + "value": -4.0238118171691895 }, "PointZ": { "type": "float", @@ -1170,7 +1170,7 @@ }, "XPosition": { "type": "float", - "value": 3.01154375076294 + "value": 3.0115437507629395 }, "YOrientation": { "type": "float", @@ -1186,7 +1186,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000000476837158 + "value": 0.20000004768371582 } }, { @@ -1214,11 +1214,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -1229,11 +1229,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -1244,11 +1244,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -1259,11 +1259,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -1274,7 +1274,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -1293,7 +1293,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -1304,11 +1304,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -1323,7 +1323,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -1334,11 +1334,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -1349,11 +1349,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -1368,7 +1368,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -1383,7 +1383,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -1394,7 +1394,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -1409,11 +1409,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -1424,11 +1424,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -1439,11 +1439,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -1454,7 +1454,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -1469,7 +1469,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -1484,11 +1484,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -1499,11 +1499,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -1641,7 +1641,7 @@ }, "YPosition": { "type": "float", - "value": 45.98467636108398 + "value": 45.984676361083984 }, "ZOrientation": { "type": "float", @@ -1692,7 +1692,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.003210067749023438 + "value": 0.0032100677490234375 }, "PointY": { "type": "float", @@ -1711,7 +1711,7 @@ }, "PointY": { "type": "float", - "value": -4.02381181716919 + "value": -4.0238118171691895 }, "PointZ": { "type": "float", @@ -1872,7 +1872,7 @@ }, "ZPosition": { "type": "float", - "value": 0.1999995708465576 + "value": 0.19999957084655762 } }, { @@ -1900,11 +1900,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -1915,11 +1915,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -1930,11 +1930,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -1945,11 +1945,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -1960,7 +1960,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -1979,7 +1979,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -1990,11 +1990,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -2009,7 +2009,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -2020,11 +2020,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -2035,11 +2035,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -2054,7 +2054,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -2069,7 +2069,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -2080,7 +2080,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -2095,11 +2095,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -2110,11 +2110,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -2125,11 +2125,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -2140,7 +2140,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -2155,7 +2155,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -2170,11 +2170,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -2185,11 +2185,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -2319,7 +2319,7 @@ }, "XPosition": { "type": "float", - "value": 35.50896835327148 + "value": 35.508968353271484 }, "YOrientation": { "type": "float", @@ -2327,7 +2327,7 @@ }, "YPosition": { "type": "float", - "value": 46.12579727172852 + "value": 46.125797271728516 }, "ZOrientation": { "type": "float", @@ -2335,7 +2335,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000000476837158 + "value": 0.20000004768371582 } }, { @@ -2363,11 +2363,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -2378,11 +2378,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -2393,11 +2393,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -2408,11 +2408,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -2423,7 +2423,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -2442,7 +2442,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -2453,11 +2453,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -2472,7 +2472,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -2483,11 +2483,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -2498,11 +2498,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -2517,7 +2517,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -2532,7 +2532,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -2543,7 +2543,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -2558,11 +2558,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -2573,11 +2573,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -2588,11 +2588,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -2603,7 +2603,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -2618,7 +2618,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -2633,11 +2633,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -2648,11 +2648,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -2790,7 +2790,7 @@ }, "YPosition": { "type": "float", - "value": 35.94875335693359 + "value": 35.948753356933594 }, "ZOrientation": { "type": "float", @@ -2798,7 +2798,7 @@ }, "ZPosition": { "type": "float", - "value": 0.1999990940093994 + "value": 0.19999909400939941 } }, { @@ -2826,11 +2826,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -2841,11 +2841,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -2856,11 +2856,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -2871,11 +2871,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -2886,7 +2886,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -2905,7 +2905,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -2916,11 +2916,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -2935,7 +2935,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -2946,11 +2946,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -2961,11 +2961,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -2980,7 +2980,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -2995,7 +2995,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -3006,7 +3006,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -3021,11 +3021,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -3036,11 +3036,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -3051,11 +3051,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -3066,7 +3066,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -3081,7 +3081,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -3096,11 +3096,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -3111,11 +3111,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -3245,7 +3245,7 @@ }, "XPosition": { "type": "float", - "value": 15.46780109405518 + "value": 15.467801094055176 }, "YOrientation": { "type": "float", @@ -3261,7 +3261,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000000476837158 + "value": 0.20000004768371582 } }, { @@ -3289,11 +3289,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -3304,11 +3304,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -3319,11 +3319,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -3334,11 +3334,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -3349,7 +3349,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -3368,7 +3368,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -3379,11 +3379,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -3398,7 +3398,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -3409,11 +3409,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -3424,11 +3424,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -3443,7 +3443,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -3458,7 +3458,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -3469,7 +3469,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -3484,11 +3484,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -3499,11 +3499,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -3514,11 +3514,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -3529,7 +3529,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -3544,7 +3544,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -3559,11 +3559,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -3574,11 +3574,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -3724,7 +3724,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000010013580322 + "value": 0.20000100135803223 } }, { @@ -3752,11 +3752,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -3767,11 +3767,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -3782,11 +3782,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -3797,11 +3797,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -3812,7 +3812,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -3831,7 +3831,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -3842,11 +3842,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -3861,7 +3861,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -3872,11 +3872,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -3887,11 +3887,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -3906,7 +3906,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -3921,7 +3921,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -3932,7 +3932,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -3947,11 +3947,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -3962,11 +3962,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -3977,11 +3977,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -3992,7 +3992,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -4007,7 +4007,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -4022,11 +4022,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -4037,11 +4037,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -4179,7 +4179,7 @@ }, "YPosition": { "type": "float", - "value": 86.00540161132813 + "value": 86.00540161132812 }, "ZOrientation": { "type": "float", @@ -4215,11 +4215,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -4230,11 +4230,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -4245,11 +4245,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -4260,11 +4260,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -4275,7 +4275,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -4294,7 +4294,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -4305,11 +4305,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -4324,7 +4324,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -4335,11 +4335,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -4350,11 +4350,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -4369,7 +4369,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -4384,7 +4384,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -4395,7 +4395,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -4410,11 +4410,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -4425,11 +4425,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -4440,11 +4440,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -4455,7 +4455,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -4470,7 +4470,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -4485,11 +4485,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -4500,11 +4500,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -4650,7 +4650,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000000476837158 + "value": 0.20000004768371582 } }, { @@ -4678,11 +4678,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -4693,11 +4693,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -4708,11 +4708,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -4723,11 +4723,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -4738,7 +4738,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -4757,7 +4757,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -4768,11 +4768,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -4787,7 +4787,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -4798,11 +4798,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -4813,11 +4813,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -4832,7 +4832,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -4847,7 +4847,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -4858,7 +4858,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -4873,11 +4873,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -4888,11 +4888,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -4903,11 +4903,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -4918,7 +4918,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -4933,7 +4933,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -4948,11 +4948,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -4963,11 +4963,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -5097,7 +5097,7 @@ }, "XPosition": { "type": "float", - "value": 15.55816268920898 + "value": 15.558162689208984 }, "YOrientation": { "type": "float", @@ -5105,7 +5105,7 @@ }, "YPosition": { "type": "float", - "value": 55.93521881103516 + "value": 55.935218811035156 }, "ZOrientation": { "type": "float", @@ -5113,7 +5113,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000000476837158 + "value": 0.20000004768371582 } }, { @@ -5141,11 +5141,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -5156,11 +5156,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -5171,11 +5171,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -5186,11 +5186,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -5201,7 +5201,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -5220,7 +5220,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -5231,11 +5231,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -5250,7 +5250,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -5261,11 +5261,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -5276,11 +5276,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -5295,7 +5295,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -5310,7 +5310,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -5321,7 +5321,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -5336,11 +5336,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -5351,11 +5351,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -5366,11 +5366,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -5381,7 +5381,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -5396,7 +5396,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -5411,11 +5411,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -5426,11 +5426,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -5604,11 +5604,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -5619,11 +5619,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -5634,11 +5634,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -5649,11 +5649,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -5664,7 +5664,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -5683,7 +5683,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -5694,11 +5694,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -5713,7 +5713,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -5724,11 +5724,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -5739,11 +5739,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -5758,7 +5758,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -5773,7 +5773,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -5784,7 +5784,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -5799,11 +5799,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -5814,11 +5814,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -5829,11 +5829,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -5844,7 +5844,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -5859,7 +5859,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -5874,11 +5874,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -5889,11 +5889,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -6023,7 +6023,7 @@ }, "XPosition": { "type": "float", - "value": 25.40461921691895 + "value": 25.404619216918945 }, "YOrientation": { "type": "float", @@ -6039,7 +6039,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000000476837158 + "value": 0.20000004768371582 } }, { @@ -6067,11 +6067,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -6082,11 +6082,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -6097,11 +6097,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -6112,11 +6112,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -6127,7 +6127,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -6146,7 +6146,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -6157,11 +6157,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -6176,7 +6176,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -6187,11 +6187,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -6202,11 +6202,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -6221,7 +6221,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -6236,7 +6236,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -6247,7 +6247,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -6262,11 +6262,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -6277,11 +6277,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -6292,11 +6292,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -6307,7 +6307,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -6322,7 +6322,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -6337,11 +6337,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -6352,11 +6352,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -6502,7 +6502,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000010013580322 + "value": 0.20000100135803223 } }, { @@ -6530,11 +6530,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -6545,11 +6545,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -6560,11 +6560,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -6575,11 +6575,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -6590,7 +6590,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -6609,7 +6609,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -6620,11 +6620,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -6639,7 +6639,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -6650,11 +6650,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -6665,11 +6665,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -6684,7 +6684,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -6699,7 +6699,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -6710,7 +6710,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -6725,11 +6725,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -6740,11 +6740,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -6755,11 +6755,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -6770,7 +6770,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -6785,7 +6785,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -6800,11 +6800,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -6815,11 +6815,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -6965,7 +6965,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000000476837158 + "value": 0.20000004768371582 } }, { @@ -6993,11 +6993,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -7008,11 +7008,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -7023,11 +7023,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -7038,11 +7038,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -7053,7 +7053,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -7072,7 +7072,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -7083,11 +7083,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -7102,7 +7102,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -7113,11 +7113,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -7128,11 +7128,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -7147,7 +7147,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -7162,7 +7162,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -7173,7 +7173,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -7188,11 +7188,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -7203,11 +7203,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -7218,11 +7218,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -7233,7 +7233,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -7248,7 +7248,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -7263,11 +7263,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -7278,11 +7278,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -7412,7 +7412,7 @@ }, "XPosition": { "type": "float", - "value": 15.53039169311523 + "value": 15.530391693115234 }, "YOrientation": { "type": "float", @@ -7420,7 +7420,7 @@ }, "YPosition": { "type": "float", - "value": 15.92131328582764 + "value": 15.921313285827637 }, "ZOrientation": { "type": "float", @@ -7428,7 +7428,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000019550323486 + "value": 0.20000195503234863 } }, { @@ -7456,11 +7456,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -7471,11 +7471,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -7486,11 +7486,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -7501,11 +7501,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -7516,7 +7516,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -7535,7 +7535,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -7546,11 +7546,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -7565,7 +7565,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -7576,11 +7576,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -7591,11 +7591,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -7610,7 +7610,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -7625,7 +7625,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -7636,7 +7636,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -7651,11 +7651,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -7666,11 +7666,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -7681,11 +7681,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -7696,7 +7696,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -7711,7 +7711,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -7726,11 +7726,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -7741,11 +7741,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -7919,11 +7919,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -7934,11 +7934,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -7949,11 +7949,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -7964,11 +7964,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -7979,7 +7979,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -7998,7 +7998,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -8009,11 +8009,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -8028,7 +8028,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -8039,11 +8039,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -8054,11 +8054,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -8073,7 +8073,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -8088,7 +8088,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -8099,7 +8099,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -8114,11 +8114,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -8129,11 +8129,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -8144,11 +8144,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -8159,7 +8159,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -8174,7 +8174,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -8189,11 +8189,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -8204,11 +8204,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -8346,7 +8346,7 @@ }, "YPosition": { "type": "float", - "value": 25.82070922851563 + "value": 25.820709228515625 }, "ZOrientation": { "type": "float", @@ -8354,7 +8354,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000010013580322 + "value": 0.20000100135803223 } }, { @@ -8382,11 +8382,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -8397,11 +8397,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -8412,11 +8412,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -8427,11 +8427,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -8442,7 +8442,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -8461,7 +8461,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -8472,11 +8472,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -8491,7 +8491,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -8502,11 +8502,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -8517,11 +8517,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -8536,7 +8536,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -8551,7 +8551,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -8562,7 +8562,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -8577,11 +8577,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -8592,11 +8592,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -8607,11 +8607,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -8622,7 +8622,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -8637,7 +8637,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -8652,11 +8652,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -8667,11 +8667,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -8809,7 +8809,7 @@ }, "YPosition": { "type": "float", - "value": 16.04148483276367 + "value": 16.041484832763672 }, "ZOrientation": { "type": "float", @@ -8845,11 +8845,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -8860,11 +8860,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -8875,11 +8875,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -8890,11 +8890,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -8905,7 +8905,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -8924,7 +8924,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -8935,11 +8935,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -8954,7 +8954,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -8965,11 +8965,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -8980,11 +8980,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -8999,7 +8999,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -9014,7 +9014,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -9025,7 +9025,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -9040,11 +9040,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -9055,11 +9055,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -9070,11 +9070,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -9085,7 +9085,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -9100,7 +9100,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -9115,11 +9115,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -9130,11 +9130,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -9264,7 +9264,7 @@ }, "XPosition": { "type": "float", - "value": 35.52972793579102 + "value": 35.529727935791016 }, "YOrientation": { "type": "float", @@ -9280,7 +9280,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000000476837158 + "value": 0.20000004768371582 } }, { @@ -9308,11 +9308,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -9323,11 +9323,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -9338,11 +9338,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -9353,11 +9353,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -9368,7 +9368,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -9387,7 +9387,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -9398,11 +9398,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -9417,7 +9417,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -9428,11 +9428,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -9443,11 +9443,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -9462,7 +9462,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -9477,7 +9477,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -9488,7 +9488,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -9503,11 +9503,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -9518,11 +9518,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -9533,11 +9533,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -9548,7 +9548,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -9563,7 +9563,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -9578,11 +9578,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -9593,11 +9593,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -9735,7 +9735,7 @@ }, "YPosition": { "type": "float", - "value": 25.62842750549316 + "value": 25.628427505493164 }, "ZOrientation": { "type": "float", @@ -9743,7 +9743,7 @@ }, "ZPosition": { "type": "float", - "value": 0.1999990940093994 + "value": 0.19999909400939941 } }, { @@ -9771,11 +9771,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -9786,11 +9786,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -9801,11 +9801,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -9816,11 +9816,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -9831,7 +9831,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -9839,7 +9839,7 @@ }, "PointZ": { "type": "float", - "value": 1.119182229042053 + "value": 1.1191822290420532 } }, { @@ -9850,7 +9850,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -9861,11 +9861,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -9880,7 +9880,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -9891,11 +9891,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -9906,11 +9906,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -9925,7 +9925,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -9940,7 +9940,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -9951,7 +9951,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -9966,11 +9966,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -9981,11 +9981,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -9996,11 +9996,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -10011,7 +10011,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -10026,7 +10026,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -10041,11 +10041,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -10056,11 +10056,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -10190,7 +10190,7 @@ }, "XPosition": { "type": "float", - "value": 35.29354095458984 + "value": 35.293540954589844 }, "YOrientation": { "type": "float", @@ -10198,7 +10198,7 @@ }, "YPosition": { "type": "float", - "value": 6.037699699401856 + "value": 6.0376996994018555 }, "ZOrientation": { "type": "float", @@ -10206,7 +10206,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000019550323486 + "value": 0.20000195503234863 } }, { @@ -10234,11 +10234,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -10249,11 +10249,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -10264,11 +10264,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -10279,11 +10279,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -10294,7 +10294,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -10313,7 +10313,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -10324,11 +10324,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -10343,7 +10343,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -10354,11 +10354,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -10369,11 +10369,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -10388,7 +10388,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -10403,7 +10403,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -10414,7 +10414,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -10429,11 +10429,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -10444,11 +10444,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -10459,11 +10459,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -10474,7 +10474,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -10489,7 +10489,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -10504,11 +10504,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -10519,11 +10519,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -10653,7 +10653,7 @@ }, "XPosition": { "type": "float", - "value": 55.39041137695313 + "value": 55.390411376953125 }, "YOrientation": { "type": "float", @@ -10661,7 +10661,7 @@ }, "YPosition": { "type": "float", - "value": 6.118979930877686 + "value": 6.1189799308776855 }, "ZOrientation": { "type": "float", @@ -10697,11 +10697,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -10712,11 +10712,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -10727,11 +10727,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -10742,11 +10742,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -10757,7 +10757,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -10776,7 +10776,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -10787,11 +10787,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -10806,7 +10806,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -10817,11 +10817,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -10832,11 +10832,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -10851,7 +10851,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -10866,7 +10866,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -10877,7 +10877,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -10892,11 +10892,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -10907,11 +10907,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -10922,11 +10922,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -10937,7 +10937,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -10952,7 +10952,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -10967,11 +10967,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -10982,11 +10982,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -11132,7 +11132,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000000476837158 + "value": 0.20000004768371582 } }, { @@ -11160,11 +11160,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -11175,11 +11175,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -11190,11 +11190,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -11205,11 +11205,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -11220,7 +11220,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -11239,7 +11239,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -11250,11 +11250,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -11269,7 +11269,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -11280,11 +11280,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -11295,11 +11295,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -11314,7 +11314,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -11329,7 +11329,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -11340,7 +11340,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -11355,11 +11355,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -11370,11 +11370,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -11385,11 +11385,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -11400,7 +11400,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -11415,7 +11415,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -11430,11 +11430,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -11445,11 +11445,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -11579,7 +11579,7 @@ }, "XPosition": { "type": "float", - "value": 55.68396377563477 + "value": 55.683963775634766 }, "YOrientation": { "type": "float", @@ -11587,7 +11587,7 @@ }, "YPosition": { "type": "float", - "value": 25.84547805786133 + "value": 25.845478057861328 }, "ZOrientation": { "type": "float", @@ -11595,7 +11595,7 @@ }, "ZPosition": { "type": "float", - "value": 0.1999995708465576 + "value": 0.19999957084655762 } }, { @@ -11623,11 +11623,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -11638,11 +11638,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -11653,11 +11653,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -11668,11 +11668,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -11683,7 +11683,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -11702,7 +11702,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -11713,11 +11713,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -11732,7 +11732,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -11743,11 +11743,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -11758,11 +11758,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -11777,7 +11777,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -11792,7 +11792,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -11803,7 +11803,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -11818,11 +11818,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -11833,11 +11833,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -11848,11 +11848,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -11863,7 +11863,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -11878,7 +11878,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -11893,11 +11893,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -11908,11 +11908,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -12050,7 +12050,7 @@ }, "YPosition": { "type": "float", - "value": 15.86480903625488 + "value": 15.864809036254883 }, "ZOrientation": { "type": "float", @@ -12086,11 +12086,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -12101,11 +12101,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -12116,11 +12116,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -12131,11 +12131,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -12146,7 +12146,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -12165,7 +12165,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -12176,11 +12176,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -12195,7 +12195,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -12206,11 +12206,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -12221,11 +12221,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -12240,7 +12240,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -12255,7 +12255,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -12266,7 +12266,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -12281,11 +12281,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -12296,11 +12296,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -12311,11 +12311,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -12326,7 +12326,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -12341,7 +12341,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -12356,11 +12356,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -12371,11 +12371,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -12521,7 +12521,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000000476837158 + "value": 0.20000004768371582 } }, { @@ -12549,11 +12549,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -12564,11 +12564,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -12579,11 +12579,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -12594,11 +12594,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -12609,7 +12609,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -12628,7 +12628,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -12639,11 +12639,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -12658,7 +12658,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -12669,11 +12669,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -12684,11 +12684,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -12703,7 +12703,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -12718,7 +12718,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -12729,7 +12729,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -12744,11 +12744,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -12759,11 +12759,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -12774,11 +12774,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -12789,7 +12789,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -12804,7 +12804,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -12819,11 +12819,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -12834,11 +12834,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -12968,7 +12968,7 @@ }, "XPosition": { "type": "float", - "value": 115.4062576293945 + "value": 115.40625762939453 }, "YOrientation": { "type": "float", @@ -12976,7 +12976,7 @@ }, "YPosition": { "type": "float", - "value": 16.0639820098877 + "value": 16.063982009887695 }, "ZOrientation": { "type": "float", @@ -12984,7 +12984,7 @@ }, "ZPosition": { "type": "float", - "value": 0.1999995708465576 + "value": 0.19999957084655762 } }, { @@ -13012,11 +13012,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -13027,11 +13027,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -13042,11 +13042,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -13057,11 +13057,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -13072,7 +13072,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -13091,7 +13091,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -13102,11 +13102,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -13121,7 +13121,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -13132,11 +13132,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -13147,11 +13147,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -13166,7 +13166,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -13181,7 +13181,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -13192,7 +13192,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -13207,11 +13207,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -13222,11 +13222,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -13237,11 +13237,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -13252,7 +13252,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -13267,7 +13267,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -13282,11 +13282,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -13297,11 +13297,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -13431,7 +13431,7 @@ }, "XPosition": { "type": "float", - "value": 105.6359558105469 + "value": 105.63595581054688 }, "YOrientation": { "type": "float", @@ -13439,7 +13439,7 @@ }, "YPosition": { "type": "float", - "value": 15.77871704101563 + "value": 15.778717041015625 }, "ZOrientation": { "type": "float", @@ -13447,7 +13447,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000000476837158 + "value": 0.20000004768371582 } }, { @@ -13475,11 +13475,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -13490,11 +13490,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -13505,11 +13505,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -13520,11 +13520,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -13535,7 +13535,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -13554,7 +13554,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -13565,11 +13565,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -13584,7 +13584,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -13595,11 +13595,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -13610,11 +13610,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -13629,7 +13629,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -13644,7 +13644,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -13655,7 +13655,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -13670,11 +13670,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -13685,11 +13685,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -13700,11 +13700,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -13715,7 +13715,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -13730,7 +13730,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -13745,11 +13745,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -13760,11 +13760,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -13894,7 +13894,7 @@ }, "XPosition": { "type": "float", - "value": 115.3349533081055 + "value": 115.33495330810547 }, "YOrientation": { "type": "float", @@ -13902,7 +13902,7 @@ }, "YPosition": { "type": "float", - "value": 25.76296997070313 + "value": 25.762969970703125 }, "ZOrientation": { "type": "float", @@ -13910,7 +13910,7 @@ }, "ZPosition": { "type": "float", - "value": 0.200000524520874 + "value": 0.20000052452087402 } }, { @@ -13938,11 +13938,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -13953,11 +13953,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -13968,11 +13968,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -13983,11 +13983,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -13998,7 +13998,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -14017,7 +14017,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -14028,11 +14028,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -14047,7 +14047,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -14058,11 +14058,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -14073,11 +14073,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -14092,7 +14092,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -14107,7 +14107,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -14118,7 +14118,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -14133,11 +14133,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -14148,11 +14148,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -14163,11 +14163,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -14178,7 +14178,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -14193,7 +14193,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -14208,11 +14208,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -14223,11 +14223,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -14373,7 +14373,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000000476837158 + "value": 0.20000004768371582 } }, { @@ -14401,11 +14401,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -14416,11 +14416,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -14431,11 +14431,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -14446,11 +14446,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -14461,7 +14461,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -14480,7 +14480,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -14491,11 +14491,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -14510,7 +14510,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -14521,11 +14521,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -14536,11 +14536,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -14555,7 +14555,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -14570,7 +14570,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -14581,7 +14581,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -14596,11 +14596,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -14611,11 +14611,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -14626,11 +14626,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -14641,7 +14641,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -14656,7 +14656,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -14671,11 +14671,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -14686,11 +14686,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -14820,7 +14820,7 @@ }, "XPosition": { "type": "float", - "value": 105.5646362304688 + "value": 105.56463623046875 }, "YOrientation": { "type": "float", @@ -14836,7 +14836,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000019550323486 + "value": 0.20000195503234863 } }, { @@ -14864,11 +14864,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -14879,11 +14879,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -14894,11 +14894,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -14909,11 +14909,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -14924,7 +14924,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -14943,7 +14943,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -14954,11 +14954,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -14973,7 +14973,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -14984,11 +14984,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -14999,11 +14999,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -15018,7 +15018,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -15033,7 +15033,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -15044,7 +15044,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -15059,11 +15059,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -15074,11 +15074,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -15089,11 +15089,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -15104,7 +15104,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -15119,7 +15119,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -15134,11 +15134,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -15149,11 +15149,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -15291,7 +15291,7 @@ }, "YPosition": { "type": "float", - "value": 25.76297187805176 + "value": 25.762971878051758 }, "ZOrientation": { "type": "float", @@ -15299,7 +15299,7 @@ }, "ZPosition": { "type": "float", - "value": 0.1999990940093994 + "value": 0.19999909400939941 } }, { @@ -15327,11 +15327,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -15342,11 +15342,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -15357,11 +15357,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -15372,11 +15372,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -15387,7 +15387,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -15406,7 +15406,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -15417,11 +15417,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -15436,7 +15436,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -15447,11 +15447,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -15462,11 +15462,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -15481,7 +15481,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -15496,7 +15496,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -15507,7 +15507,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -15522,11 +15522,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -15537,11 +15537,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -15552,11 +15552,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -15567,7 +15567,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -15582,7 +15582,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -15597,11 +15597,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -15612,11 +15612,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -15754,7 +15754,7 @@ }, "YPosition": { "type": "float", - "value": 16.0639820098877 + "value": 16.063982009887695 }, "ZOrientation": { "type": "float", @@ -15790,11 +15790,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -15805,11 +15805,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -15820,11 +15820,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -15835,11 +15835,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -15850,7 +15850,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -15869,7 +15869,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -15880,11 +15880,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -15899,7 +15899,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -15910,11 +15910,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -15925,11 +15925,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -15944,7 +15944,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -15959,7 +15959,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -15970,7 +15970,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -15985,11 +15985,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -16000,11 +16000,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -16015,11 +16015,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -16030,7 +16030,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -16045,7 +16045,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -16060,11 +16060,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -16075,11 +16075,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -16217,7 +16217,7 @@ }, "YPosition": { "type": "float", - "value": 15.99711036682129 + "value": 15.997110366821289 }, "ZOrientation": { "type": "float", @@ -16225,7 +16225,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000000476837158 + "value": 0.20000004768371582 } }, { @@ -16253,11 +16253,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -16268,11 +16268,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -16283,11 +16283,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -16298,11 +16298,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -16313,7 +16313,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -16332,7 +16332,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -16343,11 +16343,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -16362,7 +16362,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -16373,11 +16373,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -16388,11 +16388,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -16407,7 +16407,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -16422,7 +16422,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -16433,7 +16433,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -16448,11 +16448,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -16463,11 +16463,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -16478,11 +16478,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -16493,7 +16493,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -16508,7 +16508,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -16523,11 +16523,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -16538,11 +16538,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -16672,7 +16672,7 @@ }, "XPosition": { "type": "float", - "value": 65.47592926025391 + "value": 65.4759292602539 }, "YOrientation": { "type": "float", @@ -16680,7 +16680,7 @@ }, "YPosition": { "type": "float", - "value": 26.08666801452637 + "value": 26.086668014526367 }, "ZOrientation": { "type": "float", @@ -16688,7 +16688,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000010013580322 + "value": 0.20000100135803223 } }, { @@ -16716,11 +16716,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -16731,11 +16731,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -16746,11 +16746,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -16761,11 +16761,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -16776,7 +16776,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -16795,7 +16795,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -16806,11 +16806,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -16825,7 +16825,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -16836,11 +16836,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -16851,11 +16851,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -16870,7 +16870,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -16885,7 +16885,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -16896,7 +16896,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -16911,11 +16911,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -16926,11 +16926,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -16941,11 +16941,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -16956,7 +16956,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -16971,7 +16971,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -16986,11 +16986,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -17001,11 +17001,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -17151,7 +17151,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000010013580322 + "value": 0.20000100135803223 } }, { @@ -17179,11 +17179,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -17194,11 +17194,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -17209,11 +17209,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -17224,11 +17224,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -17239,7 +17239,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -17258,7 +17258,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -17269,11 +17269,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -17288,7 +17288,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -17299,11 +17299,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -17314,11 +17314,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -17333,7 +17333,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -17348,7 +17348,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -17359,7 +17359,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -17374,11 +17374,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -17389,11 +17389,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -17404,11 +17404,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -17419,7 +17419,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -17434,7 +17434,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -17449,11 +17449,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -17464,11 +17464,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -17614,7 +17614,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000010013580322 + "value": 0.20000100135803223 } }, { @@ -17642,11 +17642,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -17657,11 +17657,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -17672,11 +17672,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -17687,11 +17687,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -17702,7 +17702,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -17721,7 +17721,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -17732,11 +17732,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -17751,7 +17751,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -17762,11 +17762,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -17777,11 +17777,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -17796,7 +17796,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -17811,7 +17811,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -17822,7 +17822,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -17837,11 +17837,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -17852,11 +17852,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -17867,11 +17867,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -17882,7 +17882,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -17897,7 +17897,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -17912,11 +17912,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -17927,11 +17927,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -18061,7 +18061,7 @@ }, "XPosition": { "type": "float", - "value": 55.49167633056641 + "value": 55.491676330566406 }, "YOrientation": { "type": "float", @@ -18069,7 +18069,7 @@ }, "YPosition": { "type": "float", - "value": 46.01627349853516 + "value": 46.016273498535156 }, "ZOrientation": { "type": "float", @@ -18105,11 +18105,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -18120,11 +18120,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -18135,11 +18135,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -18150,11 +18150,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -18165,7 +18165,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -18184,7 +18184,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -18195,11 +18195,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -18214,7 +18214,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -18225,11 +18225,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -18240,11 +18240,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -18259,7 +18259,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -18274,7 +18274,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -18285,7 +18285,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -18300,11 +18300,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -18315,11 +18315,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -18330,11 +18330,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -18345,7 +18345,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -18360,7 +18360,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -18375,11 +18375,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -18390,11 +18390,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -18540,7 +18540,7 @@ }, "ZPosition": { "type": "float", - "value": 0.1999990940093994 + "value": 0.19999909400939941 } }, { @@ -18568,11 +18568,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -18583,11 +18583,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -18598,11 +18598,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -18613,11 +18613,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -18628,7 +18628,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -18647,7 +18647,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -18658,11 +18658,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -18677,7 +18677,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -18688,11 +18688,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -18703,11 +18703,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -18722,7 +18722,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -18737,7 +18737,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -18748,7 +18748,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -18763,11 +18763,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -18778,11 +18778,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -18793,11 +18793,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -18808,7 +18808,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -18823,7 +18823,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -18838,11 +18838,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -18853,11 +18853,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -19003,7 +19003,7 @@ }, "ZPosition": { "type": "float", - "value": 0.1999990940093994 + "value": 0.19999909400939941 } }, { @@ -19031,11 +19031,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -19046,11 +19046,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -19061,11 +19061,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -19076,11 +19076,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -19091,7 +19091,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -19110,7 +19110,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -19121,11 +19121,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -19140,7 +19140,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -19151,11 +19151,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -19166,11 +19166,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -19185,7 +19185,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -19200,7 +19200,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -19211,7 +19211,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -19226,11 +19226,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -19241,11 +19241,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -19256,11 +19256,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -19271,7 +19271,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -19286,7 +19286,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -19301,11 +19301,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -19316,11 +19316,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -19466,7 +19466,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000010013580322 + "value": 0.20000100135803223 } }, { @@ -19494,11 +19494,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -19509,11 +19509,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -19524,11 +19524,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -19539,11 +19539,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -19554,7 +19554,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -19573,7 +19573,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -19584,11 +19584,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -19603,7 +19603,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -19614,11 +19614,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -19629,11 +19629,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -19648,7 +19648,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -19663,7 +19663,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -19674,7 +19674,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -19689,11 +19689,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -19704,11 +19704,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -19719,11 +19719,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -19734,7 +19734,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -19749,7 +19749,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -19764,11 +19764,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -19779,11 +19779,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -19913,7 +19913,7 @@ }, "XPosition": { "type": "float", - "value": 125.5948867797852 + "value": 125.59488677978516 }, "YOrientation": { "type": "float", @@ -19929,7 +19929,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000000476837158 + "value": 0.20000004768371582 } }, { @@ -19957,11 +19957,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -19972,11 +19972,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -19987,11 +19987,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -20002,11 +20002,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -20017,7 +20017,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -20036,7 +20036,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -20047,11 +20047,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -20066,7 +20066,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -20077,11 +20077,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -20092,11 +20092,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -20111,7 +20111,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -20126,7 +20126,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -20137,7 +20137,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -20152,11 +20152,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -20167,11 +20167,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -20182,11 +20182,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -20197,7 +20197,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -20212,7 +20212,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -20227,11 +20227,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -20242,11 +20242,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -20376,7 +20376,7 @@ }, "XPosition": { "type": "float", - "value": 125.674674987793 + "value": 125.67467498779297 }, "YOrientation": { "type": "float", @@ -20392,7 +20392,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000019550323486 + "value": 0.20000195503234863 } }, { @@ -20420,11 +20420,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -20435,11 +20435,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -20450,11 +20450,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -20465,11 +20465,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -20480,7 +20480,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -20499,7 +20499,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -20510,11 +20510,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -20529,7 +20529,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -20540,11 +20540,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -20555,11 +20555,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -20574,7 +20574,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -20589,7 +20589,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -20600,7 +20600,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -20615,11 +20615,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -20630,11 +20630,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -20645,11 +20645,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -20660,7 +20660,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -20675,7 +20675,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -20690,11 +20690,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -20705,11 +20705,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -20839,7 +20839,7 @@ }, "XPosition": { "type": "float", - "value": 145.5045013427734 + "value": 145.50450134277344 }, "YOrientation": { "type": "float", @@ -20855,7 +20855,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000010013580322 + "value": 0.20000100135803223 } }, { @@ -20883,11 +20883,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -20898,11 +20898,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -20913,11 +20913,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -20928,11 +20928,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -20943,7 +20943,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -20962,7 +20962,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -20973,11 +20973,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -20992,7 +20992,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -21003,11 +21003,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -21018,11 +21018,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -21037,7 +21037,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -21052,7 +21052,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -21063,7 +21063,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -21078,11 +21078,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -21093,11 +21093,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -21108,11 +21108,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -21123,7 +21123,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -21138,7 +21138,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -21153,11 +21153,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -21168,11 +21168,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -21302,7 +21302,7 @@ }, "XPosition": { "type": "float", - "value": 125.6210250854492 + "value": 125.62102508544922 }, "YOrientation": { "type": "float", @@ -21318,7 +21318,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000000476837158 + "value": 0.20000004768371582 } }, { @@ -21346,11 +21346,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -21361,11 +21361,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -21376,11 +21376,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -21391,11 +21391,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -21406,7 +21406,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -21425,7 +21425,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -21436,11 +21436,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -21455,7 +21455,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -21466,11 +21466,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -21481,11 +21481,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -21500,7 +21500,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -21515,7 +21515,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -21526,7 +21526,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -21541,11 +21541,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -21556,11 +21556,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -21571,11 +21571,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -21586,7 +21586,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -21601,7 +21601,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -21616,11 +21616,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -21631,11 +21631,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -21773,7 +21773,7 @@ }, "YPosition": { "type": "float", - "value": 25.76592636108398 + "value": 25.765926361083984 }, "ZOrientation": { "type": "float", @@ -21781,7 +21781,7 @@ }, "ZPosition": { "type": "float", - "value": 0.200000524520874 + "value": 0.20000052452087402 } }, { @@ -21809,11 +21809,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -21824,11 +21824,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -21839,11 +21839,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -21854,11 +21854,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -21869,7 +21869,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -21888,7 +21888,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -21899,11 +21899,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -21918,7 +21918,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -21929,11 +21929,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -21944,11 +21944,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -21963,7 +21963,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -21978,7 +21978,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -21989,7 +21989,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -22004,11 +22004,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -22019,11 +22019,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -22034,11 +22034,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -22049,7 +22049,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -22064,7 +22064,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -22079,11 +22079,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -22094,11 +22094,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -22228,7 +22228,7 @@ }, "XPosition": { "type": "float", - "value": 155.5576019287109 + "value": 155.55760192871094 }, "YOrientation": { "type": "float", @@ -22244,7 +22244,7 @@ }, "ZPosition": { "type": "float", - "value": 0.1999990940093994 + "value": 0.19999909400939941 } }, { @@ -22272,11 +22272,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -22287,11 +22287,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -22302,11 +22302,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -22317,11 +22317,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -22332,7 +22332,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -22351,7 +22351,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -22362,11 +22362,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -22381,7 +22381,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -22392,11 +22392,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -22407,11 +22407,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -22426,7 +22426,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -22441,7 +22441,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -22452,7 +22452,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -22467,11 +22467,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -22482,11 +22482,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -22497,11 +22497,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -22512,7 +22512,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -22527,7 +22527,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -22542,11 +22542,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -22557,11 +22557,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -22699,7 +22699,7 @@ }, "YPosition": { "type": "float", - "value": 45.88912963867188 + "value": 45.889129638671875 }, "ZOrientation": { "type": "float", @@ -22707,7 +22707,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000000476837158 + "value": 0.20000004768371582 } }, { @@ -22735,11 +22735,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -22750,11 +22750,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -22765,11 +22765,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -22780,11 +22780,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -22795,7 +22795,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -22814,7 +22814,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -22825,11 +22825,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -22844,7 +22844,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -22855,11 +22855,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -22870,11 +22870,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -22889,7 +22889,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -22904,7 +22904,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -22915,7 +22915,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -22930,11 +22930,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -22945,11 +22945,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -22960,11 +22960,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -22975,7 +22975,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -22990,7 +22990,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -23005,11 +23005,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -23020,11 +23020,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -23154,7 +23154,7 @@ }, "XPosition": { "type": "float", - "value": 135.6738433837891 + "value": 135.67384338378906 }, "YOrientation": { "type": "float", @@ -23162,7 +23162,7 @@ }, "YPosition": { "type": "float", - "value": 46.12174224853516 + "value": 46.121742248535156 }, "ZOrientation": { "type": "float", @@ -23170,7 +23170,7 @@ }, "ZPosition": { "type": "float", - "value": 0.1999990940093994 + "value": 0.19999909400939941 } }, { @@ -23198,11 +23198,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -23213,11 +23213,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -23228,11 +23228,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -23243,11 +23243,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -23258,7 +23258,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -23277,7 +23277,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -23288,11 +23288,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -23307,7 +23307,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -23318,11 +23318,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -23333,11 +23333,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -23352,7 +23352,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -23367,7 +23367,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -23378,7 +23378,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -23393,11 +23393,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -23408,11 +23408,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -23423,11 +23423,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -23438,7 +23438,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -23453,7 +23453,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -23468,11 +23468,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -23483,11 +23483,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -23617,7 +23617,7 @@ }, "XPosition": { "type": "float", - "value": 155.4341125488281 + "value": 155.43411254882812 }, "YOrientation": { "type": "float", @@ -23633,7 +23633,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000000476837158 + "value": 0.20000004768371582 } }, { @@ -23661,11 +23661,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -23676,11 +23676,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -23691,11 +23691,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -23706,11 +23706,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -23721,7 +23721,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -23740,7 +23740,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -23751,11 +23751,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -23770,7 +23770,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -23781,11 +23781,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -23796,11 +23796,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -23815,7 +23815,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -23830,7 +23830,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -23841,7 +23841,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -23856,11 +23856,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -23871,11 +23871,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -23886,11 +23886,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -23901,7 +23901,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -23916,7 +23916,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -23931,11 +23931,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -23946,11 +23946,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -24080,7 +24080,7 @@ }, "XPosition": { "type": "float", - "value": 145.4229125976563 + "value": 145.42291259765625 }, "YOrientation": { "type": "float", @@ -24096,7 +24096,7 @@ }, "ZPosition": { "type": "float", - "value": 0.1999995708465576 + "value": 0.19999957084655762 } }, { @@ -24124,11 +24124,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -24139,11 +24139,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -24154,11 +24154,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -24169,11 +24169,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -24184,7 +24184,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -24203,7 +24203,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -24214,11 +24214,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -24233,7 +24233,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -24244,11 +24244,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -24259,11 +24259,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -24278,7 +24278,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -24293,7 +24293,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -24304,7 +24304,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -24319,11 +24319,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -24334,11 +24334,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -24349,11 +24349,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -24364,7 +24364,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -24379,7 +24379,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -24394,11 +24394,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -24409,11 +24409,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -24543,7 +24543,7 @@ }, "XPosition": { "type": "float", - "value": 135.6766510009766 + "value": 135.67665100097656 }, "YOrientation": { "type": "float", @@ -24551,7 +24551,7 @@ }, "YPosition": { "type": "float", - "value": 65.80300903320313 + "value": 65.80300903320312 }, "ZOrientation": { "type": "float", @@ -24559,7 +24559,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000000476837158 + "value": 0.20000004768371582 } }, { @@ -24587,11 +24587,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -24602,11 +24602,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -24617,11 +24617,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -24632,11 +24632,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -24647,7 +24647,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -24666,7 +24666,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -24677,11 +24677,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -24696,7 +24696,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -24707,11 +24707,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -24722,11 +24722,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -24741,7 +24741,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -24756,7 +24756,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -24767,7 +24767,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -24782,11 +24782,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -24797,11 +24797,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -24812,11 +24812,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -24827,7 +24827,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -24842,7 +24842,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -24857,11 +24857,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -24872,11 +24872,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -25014,7 +25014,7 @@ }, "YPosition": { "type": "float", - "value": 36.04873657226563 + "value": 36.048736572265625 }, "ZOrientation": { "type": "float", @@ -25022,7 +25022,7 @@ }, "ZPosition": { "type": "float", - "value": 0.1999990940093994 + "value": 0.19999909400939941 } }, { @@ -25050,11 +25050,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -25065,11 +25065,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -25080,11 +25080,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -25095,11 +25095,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -25110,7 +25110,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -25129,7 +25129,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -25140,11 +25140,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -25159,7 +25159,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -25170,11 +25170,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -25185,11 +25185,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -25204,7 +25204,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -25219,7 +25219,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -25230,7 +25230,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -25245,11 +25245,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -25260,11 +25260,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -25275,11 +25275,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -25290,7 +25290,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -25305,7 +25305,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -25320,11 +25320,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -25335,11 +25335,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -25469,7 +25469,7 @@ }, "XPosition": { "type": "float", - "value": 125.4893264770508 + "value": 125.48932647705078 }, "YOrientation": { "type": "float", @@ -25485,7 +25485,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000000476837158 + "value": 0.20000004768371582 } }, { @@ -25513,11 +25513,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -25528,11 +25528,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -25543,11 +25543,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -25558,11 +25558,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -25573,7 +25573,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -25592,7 +25592,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -25603,11 +25603,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -25622,7 +25622,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -25633,11 +25633,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -25648,11 +25648,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -25667,7 +25667,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -25682,7 +25682,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -25693,7 +25693,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -25708,11 +25708,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -25723,11 +25723,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -25738,11 +25738,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -25753,7 +25753,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -25768,7 +25768,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -25783,11 +25783,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -25798,11 +25798,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -25932,7 +25932,7 @@ }, "XPosition": { "type": "float", - "value": 105.3950347900391 + "value": 105.39503479003906 }, "YOrientation": { "type": "float", @@ -25948,7 +25948,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000010013580322 + "value": 0.20000100135803223 } }, { @@ -25976,11 +25976,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -25991,11 +25991,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -26006,11 +26006,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -26021,11 +26021,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -26036,7 +26036,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -26055,7 +26055,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -26066,11 +26066,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -26085,7 +26085,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -26096,11 +26096,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -26111,11 +26111,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -26130,7 +26130,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -26145,7 +26145,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -26156,7 +26156,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -26171,11 +26171,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -26186,11 +26186,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -26201,11 +26201,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -26216,7 +26216,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -26231,7 +26231,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -26246,11 +26246,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -26261,11 +26261,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -26395,7 +26395,7 @@ }, "XPosition": { "type": "float", - "value": 95.43727874755859 + "value": 95.4372787475586 }, "YOrientation": { "type": "float", @@ -26411,7 +26411,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000019550323486 + "value": 0.20000195503234863 } }, { @@ -26439,11 +26439,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -26454,11 +26454,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -26469,11 +26469,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -26484,11 +26484,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -26499,7 +26499,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -26518,7 +26518,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -26529,11 +26529,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -26548,7 +26548,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -26559,11 +26559,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -26574,11 +26574,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -26593,7 +26593,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -26608,7 +26608,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -26619,7 +26619,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -26634,11 +26634,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -26649,11 +26649,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -26664,11 +26664,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -26679,7 +26679,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -26694,7 +26694,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -26709,11 +26709,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -26724,11 +26724,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -26858,7 +26858,7 @@ }, "XPosition": { "type": "float", - "value": 105.6618270874023 + "value": 105.66182708740234 }, "YOrientation": { "type": "float", @@ -26866,7 +26866,7 @@ }, "YPosition": { "type": "float", - "value": 36.08975982666016 + "value": 36.089759826660156 }, "ZOrientation": { "type": "float", @@ -26902,11 +26902,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -26917,11 +26917,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -26932,11 +26932,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -26947,11 +26947,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -26962,7 +26962,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -26981,7 +26981,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -26992,11 +26992,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -27011,7 +27011,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -27022,11 +27022,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -27037,11 +27037,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -27056,7 +27056,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -27071,7 +27071,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -27082,7 +27082,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -27097,11 +27097,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -27112,11 +27112,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -27127,11 +27127,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -27142,7 +27142,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -27157,7 +27157,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -27172,11 +27172,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -27187,11 +27187,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -27329,7 +27329,7 @@ }, "YPosition": { "type": "float", - "value": 55.82796478271484 + "value": 55.827964782714844 }, "ZOrientation": { "type": "float", @@ -27337,7 +27337,7 @@ }, "ZPosition": { "type": "float", - "value": 0.1999990940093994 + "value": 0.19999909400939941 } }, { @@ -27365,11 +27365,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -27380,11 +27380,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -27395,11 +27395,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -27410,11 +27410,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -27425,7 +27425,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -27444,7 +27444,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -27455,11 +27455,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -27474,7 +27474,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -27485,11 +27485,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -27500,11 +27500,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -27519,7 +27519,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -27534,7 +27534,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -27545,7 +27545,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -27560,11 +27560,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -27575,11 +27575,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -27590,11 +27590,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -27605,7 +27605,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -27620,7 +27620,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -27635,11 +27635,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -27650,11 +27650,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -27800,7 +27800,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000010013580322 + "value": 0.20000100135803223 } }, { @@ -27828,11 +27828,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -27843,11 +27843,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -27858,11 +27858,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -27873,11 +27873,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -27888,7 +27888,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -27907,7 +27907,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -27918,11 +27918,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -27937,7 +27937,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -27948,11 +27948,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -27963,11 +27963,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -27982,7 +27982,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -27997,7 +27997,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -28008,7 +28008,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -28023,11 +28023,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -28038,11 +28038,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -28053,11 +28053,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -28068,7 +28068,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -28083,7 +28083,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -28098,11 +28098,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -28113,11 +28113,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -28255,7 +28255,7 @@ }, "YPosition": { "type": "float", - "value": 55.98964691162109 + "value": 55.989646911621094 }, "ZOrientation": { "type": "float", @@ -28263,7 +28263,7 @@ }, "ZPosition": { "type": "float", - "value": 0.1999990940093994 + "value": 0.19999909400939941 } }, { @@ -28291,11 +28291,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -28306,11 +28306,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -28321,11 +28321,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -28336,11 +28336,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -28351,7 +28351,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -28370,7 +28370,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -28381,11 +28381,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -28400,7 +28400,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -28411,11 +28411,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -28426,11 +28426,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -28445,7 +28445,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -28460,7 +28460,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -28471,7 +28471,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -28486,11 +28486,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -28501,11 +28501,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -28516,11 +28516,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -28531,7 +28531,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -28546,7 +28546,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -28561,11 +28561,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -28576,11 +28576,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -28710,7 +28710,7 @@ }, "XPosition": { "type": "float", - "value": 65.68112945556641 + "value": 65.6811294555664 }, "YOrientation": { "type": "float", @@ -28718,7 +28718,7 @@ }, "YPosition": { "type": "float", - "value": 46.04421997070313 + "value": 46.044219970703125 }, "ZOrientation": { "type": "float", @@ -28726,7 +28726,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000000476837158 + "value": 0.20000004768371582 } }, { @@ -28754,11 +28754,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -28769,11 +28769,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -28784,11 +28784,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -28799,11 +28799,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -28814,7 +28814,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -28833,7 +28833,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -28844,11 +28844,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -28863,7 +28863,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -28874,11 +28874,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -28889,11 +28889,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -28908,7 +28908,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -28923,7 +28923,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -28934,7 +28934,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -28949,11 +28949,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -28964,11 +28964,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -28979,11 +28979,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -28994,7 +28994,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -29009,7 +29009,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -29024,11 +29024,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -29039,11 +29039,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -29181,7 +29181,7 @@ }, "YPosition": { "type": "float", - "value": 46.16550445556641 + "value": 46.165504455566406 }, "ZOrientation": { "type": "float", @@ -29189,7 +29189,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000000476837158 + "value": 0.20000004768371582 } }, { @@ -29217,11 +29217,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -29232,11 +29232,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -29247,11 +29247,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -29262,11 +29262,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -29277,7 +29277,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -29296,7 +29296,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -29307,11 +29307,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -29326,7 +29326,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -29337,11 +29337,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -29352,11 +29352,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -29371,7 +29371,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -29386,7 +29386,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -29397,7 +29397,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -29412,11 +29412,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -29427,11 +29427,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -29442,11 +29442,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -29457,7 +29457,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -29472,7 +29472,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -29487,11 +29487,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -29502,11 +29502,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -29652,7 +29652,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000000476837158 + "value": 0.20000004768371582 } }, { @@ -29680,11 +29680,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -29695,11 +29695,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -29710,11 +29710,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -29725,11 +29725,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -29740,7 +29740,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -29759,7 +29759,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -29770,11 +29770,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -29789,7 +29789,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -29800,11 +29800,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -29815,11 +29815,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -29834,7 +29834,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -29849,7 +29849,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -29860,7 +29860,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -29875,11 +29875,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -29890,11 +29890,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -29905,11 +29905,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -29920,7 +29920,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -29935,7 +29935,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -29950,11 +29950,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -29965,11 +29965,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -30115,7 +30115,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000000476837158 + "value": 0.20000004768371582 } }, { @@ -30143,11 +30143,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -30158,11 +30158,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -30173,11 +30173,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -30188,11 +30188,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -30203,7 +30203,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -30222,7 +30222,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -30233,11 +30233,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -30252,7 +30252,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -30263,11 +30263,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -30278,11 +30278,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -30297,7 +30297,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -30312,7 +30312,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -30323,7 +30323,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -30338,11 +30338,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -30353,11 +30353,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -30368,11 +30368,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -30383,7 +30383,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -30398,7 +30398,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -30413,11 +30413,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -30428,11 +30428,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -30606,11 +30606,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -30621,11 +30621,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -30636,11 +30636,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -30651,11 +30651,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -30666,7 +30666,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -30685,7 +30685,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -30696,11 +30696,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -30715,7 +30715,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -30726,11 +30726,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -30741,11 +30741,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -30760,7 +30760,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -30775,7 +30775,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -30786,7 +30786,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -30801,11 +30801,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -30816,11 +30816,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -30831,11 +30831,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -30846,7 +30846,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -30861,7 +30861,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -30876,11 +30876,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -30891,11 +30891,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -31041,7 +31041,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000000476837158 + "value": 0.20000004768371582 } }, { @@ -31069,11 +31069,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -31084,11 +31084,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -31099,11 +31099,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -31114,11 +31114,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -31129,7 +31129,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -31148,7 +31148,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -31159,11 +31159,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -31178,7 +31178,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -31189,11 +31189,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -31204,11 +31204,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -31223,7 +31223,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -31238,7 +31238,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -31249,7 +31249,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -31264,11 +31264,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -31279,11 +31279,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -31294,11 +31294,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -31309,7 +31309,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -31324,7 +31324,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -31339,11 +31339,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -31354,11 +31354,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -31504,7 +31504,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000010013580322 + "value": 0.20000100135803223 } }, { @@ -31532,11 +31532,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -31547,11 +31547,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -31562,11 +31562,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -31577,11 +31577,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -31592,7 +31592,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -31611,7 +31611,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -31622,11 +31622,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -31641,7 +31641,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -31652,11 +31652,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -31667,11 +31667,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -31686,7 +31686,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -31701,7 +31701,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -31712,7 +31712,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -31727,11 +31727,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -31742,11 +31742,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -31757,11 +31757,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -31772,7 +31772,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -31787,7 +31787,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -31802,11 +31802,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -31817,11 +31817,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -31951,7 +31951,7 @@ }, "XPosition": { "type": "float", - "value": 115.7093963623047 + "value": 115.70939636230469 }, "YOrientation": { "type": "float", @@ -31959,7 +31959,7 @@ }, "YPosition": { "type": "float", - "value": 56.12046051025391 + "value": 56.120460510253906 }, "ZOrientation": { "type": "float", @@ -31967,7 +31967,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000019550323486 + "value": 0.20000195503234863 } }, { @@ -31995,11 +31995,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -32010,11 +32010,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -32025,11 +32025,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -32040,11 +32040,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -32055,7 +32055,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -32074,7 +32074,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -32085,11 +32085,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -32104,7 +32104,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -32115,11 +32115,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -32130,11 +32130,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -32149,7 +32149,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -32164,7 +32164,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -32175,7 +32175,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -32190,11 +32190,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -32205,11 +32205,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -32220,11 +32220,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -32235,7 +32235,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -32250,7 +32250,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -32265,11 +32265,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -32280,11 +32280,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -32414,7 +32414,7 @@ }, "XPosition": { "type": "float", - "value": 105.553352355957 + "value": 105.55335235595703 }, "YOrientation": { "type": "float", @@ -32430,7 +32430,7 @@ }, "ZPosition": { "type": "float", - "value": 0.1999990940093994 + "value": 0.19999909400939941 } }, { @@ -32458,11 +32458,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -32473,11 +32473,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -32488,11 +32488,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -32503,11 +32503,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -32518,7 +32518,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -32537,7 +32537,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -32548,11 +32548,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -32567,7 +32567,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -32578,11 +32578,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -32593,11 +32593,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -32612,7 +32612,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -32627,7 +32627,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -32638,7 +32638,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -32653,11 +32653,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -32668,11 +32668,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -32683,11 +32683,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -32698,7 +32698,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -32713,7 +32713,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -32728,11 +32728,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -32743,11 +32743,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -32877,7 +32877,7 @@ }, "XPosition": { "type": "float", - "value": 55.61870956420898 + "value": 55.618709564208984 }, "YOrientation": { "type": "float", @@ -32893,7 +32893,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000000476837158 + "value": 0.20000004768371582 } }, { @@ -32921,11 +32921,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -32936,11 +32936,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -32951,11 +32951,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -32966,11 +32966,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -32981,7 +32981,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -33000,7 +33000,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -33011,11 +33011,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -33030,7 +33030,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -33041,11 +33041,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -33056,11 +33056,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -33075,7 +33075,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -33090,7 +33090,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -33101,7 +33101,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -33116,11 +33116,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -33131,11 +33131,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -33146,11 +33146,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -33161,7 +33161,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -33176,7 +33176,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -33191,11 +33191,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -33206,11 +33206,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -33340,7 +33340,7 @@ }, "XPosition": { "type": "float", - "value": 105.5792541503906 + "value": 105.57925415039062 }, "YOrientation": { "type": "float", @@ -33348,7 +33348,7 @@ }, "YPosition": { "type": "float", - "value": 116.0735321044922 + "value": 116.07353210449219 }, "ZOrientation": { "type": "float", @@ -33356,7 +33356,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000000476837158 + "value": 0.20000004768371582 } }, { @@ -33384,11 +33384,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -33399,11 +33399,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -33414,11 +33414,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -33429,11 +33429,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -33444,7 +33444,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -33463,7 +33463,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -33474,11 +33474,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -33493,7 +33493,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -33504,11 +33504,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -33519,11 +33519,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -33538,7 +33538,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -33553,7 +33553,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -33564,7 +33564,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -33579,11 +33579,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -33594,11 +33594,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -33609,11 +33609,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -33624,7 +33624,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -33639,7 +33639,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -33654,11 +33654,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -33669,11 +33669,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -33803,7 +33803,7 @@ }, "XPosition": { "type": "float", - "value": 115.6219635009766 + "value": 115.62196350097656 }, "YOrientation": { "type": "float", @@ -33811,7 +33811,7 @@ }, "YPosition": { "type": "float", - "value": 126.1162414550781 + "value": 126.11624145507812 }, "ZOrientation": { "type": "float", @@ -33819,7 +33819,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000000476837158 + "value": 0.20000004768371582 } }, { @@ -33847,11 +33847,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -33862,11 +33862,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -33877,11 +33877,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -33892,11 +33892,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -33907,7 +33907,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -33926,7 +33926,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -33937,11 +33937,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -33956,7 +33956,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -33967,11 +33967,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -33982,11 +33982,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -34001,7 +34001,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -34016,7 +34016,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -34027,7 +34027,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -34042,11 +34042,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -34057,11 +34057,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -34072,11 +34072,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -34087,7 +34087,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -34102,7 +34102,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -34117,11 +34117,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -34132,11 +34132,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -34266,7 +34266,7 @@ }, "XPosition": { "type": "float", - "value": 135.4682769775391 + "value": 135.46827697753906 }, "YOrientation": { "type": "float", @@ -34282,7 +34282,7 @@ }, "ZPosition": { "type": "float", - "value": 0.1999990940093994 + "value": 0.19999909400939941 } }, { @@ -34310,11 +34310,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -34325,11 +34325,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -34340,11 +34340,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -34355,11 +34355,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -34370,7 +34370,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -34389,7 +34389,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -34400,11 +34400,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -34419,7 +34419,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -34430,11 +34430,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -34445,11 +34445,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -34464,7 +34464,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -34479,7 +34479,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -34490,7 +34490,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -34505,11 +34505,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -34520,11 +34520,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -34535,11 +34535,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -34550,7 +34550,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -34565,7 +34565,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -34580,11 +34580,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -34595,11 +34595,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -34729,7 +34729,7 @@ }, "XPosition": { "type": "float", - "value": 145.3515777587891 + "value": 145.35157775878906 }, "YOrientation": { "type": "float", @@ -34737,7 +34737,7 @@ }, "YPosition": { "type": "float", - "value": 116.1532287597656 + "value": 116.15322875976562 }, "ZOrientation": { "type": "float", @@ -34745,7 +34745,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000000476837158 + "value": 0.20000004768371582 } }, { @@ -34773,11 +34773,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -34788,11 +34788,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -34803,11 +34803,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -34818,11 +34818,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -34833,7 +34833,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -34852,7 +34852,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -34863,11 +34863,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -34882,7 +34882,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -34893,11 +34893,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -34908,11 +34908,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -34927,7 +34927,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -34942,7 +34942,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -34953,7 +34953,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -34968,11 +34968,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -34983,11 +34983,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -34998,11 +34998,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -35013,7 +35013,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -35028,7 +35028,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -35043,11 +35043,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -35058,11 +35058,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -35192,7 +35192,7 @@ }, "XPosition": { "type": "float", - "value": 105.8183670043945 + "value": 105.81836700439453 }, "YOrientation": { "type": "float", @@ -35200,7 +35200,7 @@ }, "YPosition": { "type": "float", - "value": 155.6688079833984 + "value": 155.66880798339844 }, "ZOrientation": { "type": "float", @@ -35208,7 +35208,7 @@ }, "ZPosition": { "type": "float", - "value": 0.1999995708465576 + "value": 0.19999957084655762 } }, { @@ -35236,11 +35236,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -35251,11 +35251,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -35266,11 +35266,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -35281,11 +35281,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -35296,7 +35296,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -35315,7 +35315,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -35326,11 +35326,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -35345,7 +35345,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -35356,11 +35356,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -35371,11 +35371,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -35390,7 +35390,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -35405,7 +35405,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -35416,7 +35416,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -35431,11 +35431,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -35446,11 +35446,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -35461,11 +35461,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -35476,7 +35476,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -35491,7 +35491,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -35506,11 +35506,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -35521,11 +35521,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -35699,11 +35699,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -35714,11 +35714,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -35729,11 +35729,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -35744,11 +35744,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -35759,7 +35759,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -35778,7 +35778,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -35789,11 +35789,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -35808,7 +35808,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -35819,11 +35819,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -35834,11 +35834,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -35853,7 +35853,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -35868,7 +35868,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -35879,7 +35879,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -35894,11 +35894,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -35909,11 +35909,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -35924,11 +35924,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -35939,7 +35939,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -35954,7 +35954,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -35969,11 +35969,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -35984,11 +35984,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -36134,7 +36134,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000019550323486 + "value": 0.20000195503234863 } }, { @@ -36162,11 +36162,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -36177,11 +36177,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -36192,11 +36192,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -36207,11 +36207,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -36222,7 +36222,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -36241,7 +36241,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -36252,11 +36252,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -36271,7 +36271,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -36282,11 +36282,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -36297,11 +36297,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -36316,7 +36316,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -36331,7 +36331,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -36342,7 +36342,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -36357,11 +36357,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -36372,11 +36372,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -36387,11 +36387,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -36402,7 +36402,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -36417,7 +36417,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -36432,11 +36432,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -36447,11 +36447,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -36581,7 +36581,7 @@ }, "XPosition": { "type": "float", - "value": 115.6367721557617 + "value": 115.63677215576172 }, "YOrientation": { "type": "float", @@ -36597,7 +36597,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000000476837158 + "value": 0.20000004768371582 } }, { @@ -36625,11 +36625,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -36640,11 +36640,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -36655,11 +36655,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -36670,11 +36670,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -36685,7 +36685,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -36704,7 +36704,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -36715,11 +36715,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -36734,7 +36734,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -36745,11 +36745,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -36760,11 +36760,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -36779,7 +36779,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -36794,7 +36794,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -36805,7 +36805,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -36820,11 +36820,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -36835,11 +36835,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -36850,11 +36850,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -36865,7 +36865,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -36880,7 +36880,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -36895,11 +36895,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -36910,11 +36910,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -37044,7 +37044,7 @@ }, "XPosition": { "type": "float", - "value": 135.3796081542969 + "value": 135.37960815429688 }, "YOrientation": { "type": "float", @@ -37052,7 +37052,7 @@ }, "YPosition": { "type": "float", - "value": 135.7371520996094 + "value": 135.73715209960938 }, "ZOrientation": { "type": "float", @@ -37060,7 +37060,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000010013580322 + "value": 0.20000100135803223 } }, { @@ -37088,11 +37088,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -37103,11 +37103,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -37118,11 +37118,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -37133,11 +37133,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -37148,7 +37148,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -37167,7 +37167,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -37178,11 +37178,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -37197,7 +37197,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -37208,11 +37208,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -37223,11 +37223,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -37242,7 +37242,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -37257,7 +37257,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -37268,7 +37268,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -37283,11 +37283,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -37298,11 +37298,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -37313,11 +37313,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -37328,7 +37328,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -37343,7 +37343,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -37358,11 +37358,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -37373,11 +37373,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -37515,7 +37515,7 @@ }, "YPosition": { "type": "float", - "value": 66.09665679931641 + "value": 66.0966567993164 }, "ZOrientation": { "type": "float", @@ -37523,7 +37523,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000038623809815 + "value": 0.20000386238098145 } }, { @@ -37551,11 +37551,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -37566,11 +37566,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -37581,11 +37581,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -37596,11 +37596,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -37611,7 +37611,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -37630,7 +37630,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -37641,11 +37641,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -37660,7 +37660,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -37671,11 +37671,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -37686,11 +37686,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -37705,7 +37705,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -37720,7 +37720,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -37731,7 +37731,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -37746,11 +37746,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -37761,11 +37761,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -37776,11 +37776,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -37791,7 +37791,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -37806,7 +37806,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -37821,11 +37821,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -37836,11 +37836,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -37970,7 +37970,7 @@ }, "XPosition": { "type": "float", - "value": 35.32824325561523 + "value": 35.328243255615234 }, "YOrientation": { "type": "float", @@ -37986,7 +37986,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000019550323486 + "value": 0.20000195503234863 } }, { @@ -38014,11 +38014,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -38029,11 +38029,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -38044,11 +38044,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -38059,11 +38059,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -38074,7 +38074,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -38093,7 +38093,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -38104,11 +38104,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -38123,7 +38123,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -38134,11 +38134,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -38149,11 +38149,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -38168,7 +38168,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -38183,7 +38183,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -38194,7 +38194,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -38209,11 +38209,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -38224,11 +38224,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -38239,11 +38239,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -38254,7 +38254,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -38269,7 +38269,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -38284,11 +38284,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -38299,11 +38299,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -38433,7 +38433,7 @@ }, "XPosition": { "type": "float", - "value": 65.45547485351563 + "value": 65.45547485351562 }, "YOrientation": { "type": "float", @@ -38477,11 +38477,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -38492,11 +38492,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -38507,11 +38507,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -38522,11 +38522,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -38537,7 +38537,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -38556,7 +38556,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -38567,11 +38567,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -38586,7 +38586,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -38597,11 +38597,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -38612,11 +38612,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -38631,7 +38631,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -38646,7 +38646,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -38657,7 +38657,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -38672,11 +38672,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -38687,11 +38687,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -38702,11 +38702,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -38717,7 +38717,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -38732,7 +38732,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -38747,11 +38747,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -38762,11 +38762,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -38912,7 +38912,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000019550323486 + "value": 0.20000195503234863 } }, { @@ -38940,11 +38940,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -38955,11 +38955,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -38970,11 +38970,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -38985,11 +38985,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -39000,7 +39000,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -39019,7 +39019,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -39030,11 +39030,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -39049,7 +39049,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -39060,11 +39060,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -39075,11 +39075,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -39094,7 +39094,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -39109,7 +39109,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -39120,7 +39120,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -39135,11 +39135,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -39150,11 +39150,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -39165,11 +39165,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -39180,7 +39180,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -39195,7 +39195,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -39210,11 +39210,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -39225,11 +39225,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -39375,7 +39375,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000000476837158 + "value": 0.20000004768371582 } }, { @@ -39403,11 +39403,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -39418,11 +39418,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -39433,11 +39433,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -39448,11 +39448,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -39463,7 +39463,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -39482,7 +39482,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -39493,11 +39493,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -39512,7 +39512,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -39523,11 +39523,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -39538,11 +39538,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -39557,7 +39557,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -39572,7 +39572,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -39583,7 +39583,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -39598,11 +39598,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -39613,11 +39613,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -39628,11 +39628,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -39643,7 +39643,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -39658,7 +39658,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -39673,11 +39673,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -39688,11 +39688,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -39822,7 +39822,7 @@ }, "XPosition": { "type": "float", - "value": 15.62148475646973 + "value": 15.621484756469727 }, "YOrientation": { "type": "float", @@ -39838,7 +39838,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000019550323486 + "value": 0.20000195503234863 } }, { @@ -39866,11 +39866,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -39881,11 +39881,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -39896,11 +39896,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -39911,11 +39911,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -39926,7 +39926,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -39945,7 +39945,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -39956,11 +39956,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -39975,7 +39975,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -39986,11 +39986,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -40001,11 +40001,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -40020,7 +40020,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -40035,7 +40035,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -40046,7 +40046,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -40061,11 +40061,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -40076,11 +40076,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -40091,11 +40091,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -40106,7 +40106,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -40121,7 +40121,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -40136,11 +40136,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -40151,11 +40151,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -40301,7 +40301,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000010013580322 + "value": 0.20000100135803223 } }, { @@ -40329,11 +40329,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -40344,11 +40344,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -40359,11 +40359,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -40374,11 +40374,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -40389,7 +40389,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -40408,7 +40408,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -40419,11 +40419,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -40438,7 +40438,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -40449,11 +40449,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -40464,11 +40464,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -40483,7 +40483,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -40498,7 +40498,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -40509,7 +40509,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -40524,11 +40524,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -40539,11 +40539,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -40554,11 +40554,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -40569,7 +40569,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -40584,7 +40584,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -40599,11 +40599,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -40614,11 +40614,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -40748,7 +40748,7 @@ }, "XPosition": { "type": "float", - "value": 15.62148475646973 + "value": 15.621484756469727 }, "YOrientation": { "type": "float", @@ -40764,7 +40764,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000010013580322 + "value": 0.20000100135803223 } }, { @@ -40792,11 +40792,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -40807,11 +40807,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -40822,11 +40822,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -40837,11 +40837,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -40852,7 +40852,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -40871,7 +40871,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -40882,11 +40882,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -40901,7 +40901,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -40912,11 +40912,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -40927,11 +40927,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -40946,7 +40946,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -40961,7 +40961,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -40972,7 +40972,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -40987,11 +40987,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -41002,11 +41002,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -41017,11 +41017,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -41032,7 +41032,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -41047,7 +41047,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -41062,11 +41062,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -41077,11 +41077,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -41219,7 +41219,7 @@ }, "YPosition": { "type": "float", - "value": 105.7316741943359 + "value": 105.73167419433594 }, "ZOrientation": { "type": "float", @@ -41227,7 +41227,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000010013580322 + "value": 0.20000100135803223 } }, { @@ -41255,11 +41255,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -41270,11 +41270,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -41285,11 +41285,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -41300,11 +41300,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -41315,7 +41315,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -41334,7 +41334,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -41345,11 +41345,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -41364,7 +41364,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -41375,11 +41375,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -41390,11 +41390,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -41409,7 +41409,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -41424,7 +41424,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -41435,7 +41435,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -41450,11 +41450,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -41465,11 +41465,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -41480,11 +41480,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -41495,7 +41495,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -41510,7 +41510,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -41525,11 +41525,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -41540,11 +41540,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -41690,7 +41690,7 @@ }, "ZPosition": { "type": "float", - "value": 0.1999990940093994 + "value": 0.19999909400939941 } }, { @@ -41718,11 +41718,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -41733,11 +41733,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -41748,11 +41748,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -41763,11 +41763,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -41778,7 +41778,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -41797,7 +41797,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -41808,11 +41808,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -41827,7 +41827,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -41838,11 +41838,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -41853,11 +41853,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -41872,7 +41872,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -41887,7 +41887,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -41898,7 +41898,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -41913,11 +41913,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -41928,11 +41928,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -41943,11 +41943,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -41958,7 +41958,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -41973,7 +41973,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -41988,11 +41988,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -42003,11 +42003,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -42145,7 +42145,7 @@ }, "YPosition": { "type": "float", - "value": 145.6945190429688 + "value": 145.69451904296875 }, "ZOrientation": { "type": "float", @@ -42153,7 +42153,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000010013580322 + "value": 0.20000100135803223 } }, { @@ -42181,11 +42181,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -42196,11 +42196,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -42211,11 +42211,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -42226,11 +42226,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -42241,7 +42241,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -42260,7 +42260,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -42271,11 +42271,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -42290,7 +42290,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -42301,11 +42301,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -42316,11 +42316,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -42335,7 +42335,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -42350,7 +42350,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -42361,7 +42361,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -42376,11 +42376,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -42391,11 +42391,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -42406,11 +42406,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -42421,7 +42421,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -42436,7 +42436,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -42451,11 +42451,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -42466,11 +42466,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -42600,7 +42600,7 @@ }, "XPosition": { "type": "float", - "value": 15.30326843261719 + "value": 15.303268432617188 }, "YOrientation": { "type": "float", @@ -42608,7 +42608,7 @@ }, "YPosition": { "type": "float", - "value": 155.7801361083984 + "value": 155.78013610839844 }, "ZOrientation": { "type": "float", @@ -42616,7 +42616,7 @@ }, "ZPosition": { "type": "float", - "value": 0.200000524520874 + "value": 0.20000052452087402 } }, { @@ -42644,11 +42644,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -42659,11 +42659,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -42674,11 +42674,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -42689,11 +42689,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -42704,7 +42704,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -42723,7 +42723,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -42734,11 +42734,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -42753,7 +42753,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -42764,11 +42764,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -42779,11 +42779,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -42798,7 +42798,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -42813,7 +42813,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -42824,7 +42824,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -42839,11 +42839,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -42854,11 +42854,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -42869,11 +42869,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -42884,7 +42884,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -42899,7 +42899,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -42914,11 +42914,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -42929,11 +42929,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -43063,7 +43063,7 @@ }, "XPosition": { "type": "float", - "value": 25.65903282165527 + "value": 25.659032821655273 }, "YOrientation": { "type": "float", @@ -43071,7 +43071,7 @@ }, "YPosition": { "type": "float", - "value": 136.1492004394531 + "value": 136.14920043945312 }, "ZOrientation": { "type": "float", @@ -43079,7 +43079,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000019550323486 + "value": 0.20000195503234863 } }, { @@ -43107,11 +43107,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -43122,11 +43122,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -43137,11 +43137,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -43152,11 +43152,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -43167,7 +43167,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -43186,7 +43186,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -43197,11 +43197,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -43216,7 +43216,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -43227,11 +43227,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -43242,11 +43242,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -43261,7 +43261,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -43276,7 +43276,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -43287,7 +43287,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -43302,11 +43302,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -43317,11 +43317,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -43332,11 +43332,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -43347,7 +43347,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -43362,7 +43362,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -43377,11 +43377,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -43392,11 +43392,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -43526,7 +43526,7 @@ }, "XPosition": { "type": "float", - "value": 25.5689811706543 + "value": 25.568981170654297 }, "YOrientation": { "type": "float", @@ -43534,7 +43534,7 @@ }, "YPosition": { "type": "float", - "value": 106.0724792480469 + "value": 106.07247924804688 }, "ZOrientation": { "type": "float", @@ -43542,7 +43542,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000000476837158 + "value": 0.20000004768371582 } }, { @@ -43570,11 +43570,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -43585,11 +43585,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -43600,11 +43600,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -43615,11 +43615,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -43630,7 +43630,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -43649,7 +43649,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -43660,11 +43660,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -43679,7 +43679,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -43690,11 +43690,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -43705,11 +43705,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -43724,7 +43724,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -43739,7 +43739,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -43750,7 +43750,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -43765,11 +43765,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -43780,11 +43780,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -43795,11 +43795,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -43810,7 +43810,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -43825,7 +43825,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -43840,11 +43840,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -43855,11 +43855,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -43989,7 +43989,7 @@ }, "XPosition": { "type": "float", - "value": 15.66346836090088 + "value": 15.663468360900879 }, "YOrientation": { "type": "float", @@ -44005,7 +44005,7 @@ }, "ZPosition": { "type": "float", - "value": 0.1999990940093994 + "value": 0.19999909400939941 } }, { @@ -44033,11 +44033,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -44048,11 +44048,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -44063,11 +44063,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -44078,11 +44078,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -44093,7 +44093,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -44112,7 +44112,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -44123,11 +44123,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -44142,7 +44142,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -44153,11 +44153,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -44168,11 +44168,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -44187,7 +44187,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -44202,7 +44202,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -44213,7 +44213,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -44228,11 +44228,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -44243,11 +44243,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -44258,11 +44258,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -44273,7 +44273,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -44288,7 +44288,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -44303,11 +44303,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -44318,11 +44318,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -44452,7 +44452,7 @@ }, "XPosition": { "type": "float", - "value": 15.48336887359619 + "value": 15.483368873596191 }, "YOrientation": { "type": "float", @@ -44460,7 +44460,7 @@ }, "YPosition": { "type": "float", - "value": 125.7934494018555 + "value": 125.79344940185547 }, "ZOrientation": { "type": "float", @@ -44496,11 +44496,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -44511,11 +44511,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -44526,11 +44526,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -44541,11 +44541,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -44556,7 +44556,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -44575,7 +44575,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -44586,11 +44586,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -44605,7 +44605,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -44616,11 +44616,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -44631,11 +44631,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -44650,7 +44650,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -44665,7 +44665,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -44676,7 +44676,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -44691,11 +44691,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -44706,11 +44706,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -44721,11 +44721,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -44736,7 +44736,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -44751,7 +44751,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -44766,11 +44766,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -44781,11 +44781,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -44923,7 +44923,7 @@ }, "YPosition": { "type": "float", - "value": 125.8834991455078 + "value": 125.88349914550781 }, "ZOrientation": { "type": "float", @@ -44931,7 +44931,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000000476837158 + "value": 0.20000004768371582 } }, { @@ -44959,11 +44959,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -44974,11 +44974,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -44989,11 +44989,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -45004,11 +45004,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -45019,7 +45019,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -45038,7 +45038,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -45049,11 +45049,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -45068,7 +45068,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -45079,11 +45079,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -45094,11 +45094,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -45113,7 +45113,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -45128,7 +45128,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -45139,7 +45139,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -45154,11 +45154,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -45169,11 +45169,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -45184,11 +45184,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -45199,7 +45199,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -45214,7 +45214,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -45229,11 +45229,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -45244,11 +45244,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -45386,7 +45386,7 @@ }, "YPosition": { "type": "float", - "value": 105.7380676269531 + "value": 105.73806762695312 }, "ZOrientation": { "type": "float", @@ -45394,7 +45394,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000000476837158 + "value": 0.20000004768371582 } }, { @@ -45422,11 +45422,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -45437,11 +45437,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -45452,11 +45452,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -45467,11 +45467,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -45482,7 +45482,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -45501,7 +45501,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -45512,11 +45512,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -45531,7 +45531,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -45542,11 +45542,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -45557,11 +45557,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -45576,7 +45576,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -45591,7 +45591,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -45602,7 +45602,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -45617,11 +45617,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -45632,11 +45632,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -45647,11 +45647,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -45662,7 +45662,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -45677,7 +45677,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -45692,11 +45692,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -45707,11 +45707,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -45841,7 +45841,7 @@ }, "XPosition": { "type": "float", - "value": 25.38888549804688 + "value": 25.388885498046875 }, "YOrientation": { "type": "float", @@ -45857,7 +45857,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000000476837158 + "value": 0.20000004768371582 } }, { @@ -45885,11 +45885,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -45900,11 +45900,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -45915,11 +45915,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -45930,11 +45930,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -45945,7 +45945,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -45964,7 +45964,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -45975,11 +45975,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -45994,7 +45994,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -46005,11 +46005,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -46020,11 +46020,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -46039,7 +46039,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -46054,7 +46054,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -46065,7 +46065,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -46080,11 +46080,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -46095,11 +46095,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -46110,11 +46110,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -46125,7 +46125,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -46140,7 +46140,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -46155,11 +46155,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -46170,11 +46170,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -46304,7 +46304,7 @@ }, "XPosition": { "type": "float", - "value": 15.48336791992188 + "value": 15.483367919921875 }, "YOrientation": { "type": "float", @@ -46312,7 +46312,7 @@ }, "YPosition": { "type": "float", - "value": 105.9890594482422 + "value": 105.98905944824219 }, "ZOrientation": { "type": "float", @@ -46320,7 +46320,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000010013580322 + "value": 0.20000100135803223 } }, { @@ -46348,11 +46348,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -46363,11 +46363,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -46378,11 +46378,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -46393,11 +46393,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -46408,7 +46408,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -46427,7 +46427,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -46438,11 +46438,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -46457,7 +46457,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -46468,11 +46468,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -46483,11 +46483,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -46502,7 +46502,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -46517,7 +46517,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -46528,7 +46528,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -46543,11 +46543,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -46558,11 +46558,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -46573,11 +46573,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -46588,7 +46588,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -46603,7 +46603,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -46618,11 +46618,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -46633,11 +46633,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -46767,7 +46767,7 @@ }, "XPosition": { "type": "float", - "value": 25.74908065795898 + "value": 25.749080657958984 }, "YOrientation": { "type": "float", @@ -46783,7 +46783,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000000476837158 + "value": 0.20000004768371582 } }, { @@ -46811,11 +46811,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -46826,11 +46826,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -46841,11 +46841,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -46856,11 +46856,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -46871,7 +46871,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -46890,7 +46890,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -46901,11 +46901,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -46920,7 +46920,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -46931,11 +46931,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -46946,11 +46946,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -46965,7 +46965,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -46980,7 +46980,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -46991,7 +46991,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -47006,11 +47006,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -47021,11 +47021,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -47036,11 +47036,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -47051,7 +47051,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -47066,7 +47066,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -47081,11 +47081,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -47096,11 +47096,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -47246,7 +47246,7 @@ }, "ZPosition": { "type": "float", - "value": 0.1999990940093994 + "value": 0.19999909400939941 } }, { @@ -47274,11 +47274,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -47289,11 +47289,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -47304,11 +47304,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -47319,11 +47319,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -47334,7 +47334,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -47353,7 +47353,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -47364,11 +47364,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -47383,7 +47383,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -47394,11 +47394,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -47409,11 +47409,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -47428,7 +47428,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -47443,7 +47443,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -47454,7 +47454,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -47469,11 +47469,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -47484,11 +47484,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -47499,11 +47499,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -47514,7 +47514,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -47529,7 +47529,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -47544,11 +47544,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -47559,11 +47559,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -47693,7 +47693,7 @@ }, "XPosition": { "type": "float", - "value": 115.4202728271484 + "value": 115.42027282714844 }, "YOrientation": { "type": "float", @@ -47709,7 +47709,7 @@ }, "ZPosition": { "type": "float", - "value": 0.200000524520874 + "value": 0.20000052452087402 } }, { @@ -47737,11 +47737,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -47752,11 +47752,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -47767,11 +47767,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -47782,11 +47782,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -47797,7 +47797,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -47816,7 +47816,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -47827,11 +47827,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -47846,7 +47846,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -47857,11 +47857,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -47872,11 +47872,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -47891,7 +47891,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -47906,7 +47906,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -47917,7 +47917,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -47932,11 +47932,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -47947,11 +47947,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -47962,11 +47962,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -47977,7 +47977,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -47992,7 +47992,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -48007,11 +48007,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -48022,11 +48022,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -48172,7 +48172,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000000476837158 + "value": 0.20000004768371582 } }, { @@ -48200,11 +48200,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -48215,11 +48215,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -48230,11 +48230,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -48245,11 +48245,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -48260,7 +48260,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -48279,7 +48279,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -48290,11 +48290,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -48309,7 +48309,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -48320,11 +48320,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -48335,11 +48335,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -48354,7 +48354,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -48369,7 +48369,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -48380,7 +48380,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -48395,11 +48395,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -48410,11 +48410,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -48425,11 +48425,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -48440,7 +48440,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -48455,7 +48455,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -48470,11 +48470,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -48485,11 +48485,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -48619,7 +48619,7 @@ }, "XPosition": { "type": "float", - "value": 155.5028686523438 + "value": 155.50286865234375 }, "YOrientation": { "type": "float", @@ -48627,7 +48627,7 @@ }, "YPosition": { "type": "float", - "value": 106.1397247314453 + "value": 106.13972473144531 }, "ZOrientation": { "type": "float", @@ -48635,7 +48635,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000000476837158 + "value": 0.20000004768371582 } }, { @@ -48663,11 +48663,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -48678,11 +48678,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -48693,11 +48693,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -48708,11 +48708,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -48723,7 +48723,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -48742,7 +48742,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -48753,11 +48753,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -48772,7 +48772,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -48783,11 +48783,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -48798,11 +48798,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -48817,7 +48817,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -48832,7 +48832,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -48843,7 +48843,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -48858,11 +48858,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -48873,11 +48873,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -48888,11 +48888,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -48903,7 +48903,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -48918,7 +48918,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -48933,11 +48933,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -48948,11 +48948,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -49082,7 +49082,7 @@ }, "XPosition": { "type": "float", - "value": 155.4319000244141 + "value": 155.43190002441406 }, "YOrientation": { "type": "float", @@ -49098,7 +49098,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000000476837158 + "value": 0.20000004768371582 } }, { @@ -49126,11 +49126,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -49141,11 +49141,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -49156,11 +49156,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -49171,11 +49171,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -49186,7 +49186,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -49205,7 +49205,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -49216,11 +49216,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -49235,7 +49235,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -49246,11 +49246,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -49261,11 +49261,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -49280,7 +49280,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -49295,7 +49295,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -49306,7 +49306,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -49321,11 +49321,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -49336,11 +49336,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -49351,11 +49351,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -49366,7 +49366,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -49381,7 +49381,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -49396,11 +49396,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -49411,11 +49411,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -49545,7 +49545,7 @@ }, "XPosition": { "type": "float", - "value": 145.4556732177734 + "value": 145.45567321777344 }, "YOrientation": { "type": "float", @@ -49589,11 +49589,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -49604,11 +49604,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -49619,11 +49619,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -49634,11 +49634,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -49649,7 +49649,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -49668,7 +49668,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -49679,11 +49679,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -49698,7 +49698,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -49709,11 +49709,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -49724,11 +49724,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -49743,7 +49743,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -49758,7 +49758,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -49769,7 +49769,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -49784,11 +49784,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -49799,11 +49799,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -49814,11 +49814,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -49829,7 +49829,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -49844,7 +49844,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -49859,11 +49859,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -49874,11 +49874,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -50024,7 +50024,7 @@ }, "ZPosition": { "type": "float", - "value": 0.1999990940093994 + "value": 0.19999909400939941 } }, { @@ -50052,11 +50052,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -50067,11 +50067,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -50082,11 +50082,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -50097,11 +50097,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -50112,7 +50112,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -50131,7 +50131,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -50142,11 +50142,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -50161,7 +50161,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -50172,11 +50172,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -50187,11 +50187,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -50206,7 +50206,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -50221,7 +50221,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -50232,7 +50232,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -50247,11 +50247,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -50262,11 +50262,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -50277,11 +50277,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -50292,7 +50292,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -50307,7 +50307,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -50322,11 +50322,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -50337,11 +50337,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -50471,7 +50471,7 @@ }, "XPosition": { "type": "float", - "value": 125.4735717773438 + "value": 125.47357177734375 }, "YOrientation": { "type": "float", @@ -50487,7 +50487,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000019550323486 + "value": 0.20000195503234863 } }, { @@ -50515,11 +50515,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -50530,11 +50530,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -50545,11 +50545,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -50560,11 +50560,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -50575,7 +50575,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -50594,7 +50594,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -50605,11 +50605,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -50624,7 +50624,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -50635,11 +50635,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -50650,11 +50650,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -50669,7 +50669,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -50684,7 +50684,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -50695,7 +50695,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -50710,11 +50710,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -50725,11 +50725,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -50740,11 +50740,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -50755,7 +50755,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -50770,7 +50770,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -50785,11 +50785,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -50800,11 +50800,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -50934,7 +50934,7 @@ }, "XPosition": { "type": "float", - "value": 135.7204742431641 + "value": 135.72047424316406 }, "YOrientation": { "type": "float", @@ -50950,7 +50950,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000010013580322 + "value": 0.20000100135803223 } }, { @@ -50978,11 +50978,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -50993,11 +50993,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -51008,11 +51008,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -51023,11 +51023,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -51038,7 +51038,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -51057,7 +51057,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -51068,11 +51068,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -51087,7 +51087,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -51098,11 +51098,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -51113,11 +51113,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -51132,7 +51132,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -51147,7 +51147,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -51158,7 +51158,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -51173,11 +51173,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -51188,11 +51188,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -51203,11 +51203,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -51218,7 +51218,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -51233,7 +51233,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -51248,11 +51248,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -51263,11 +51263,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -51413,7 +51413,7 @@ }, "ZPosition": { "type": "float", - "value": 0.1999990940093994 + "value": 0.19999909400939941 } }, { @@ -51441,11 +51441,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -51456,11 +51456,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -51471,11 +51471,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -51486,11 +51486,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -51501,7 +51501,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -51520,7 +51520,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -51531,11 +51531,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -51550,7 +51550,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -51561,11 +51561,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -51576,11 +51576,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -51595,7 +51595,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -51610,7 +51610,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -51621,7 +51621,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -51636,11 +51636,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -51651,11 +51651,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -51666,11 +51666,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -51681,7 +51681,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -51696,7 +51696,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -51711,11 +51711,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -51726,11 +51726,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -51876,7 +51876,7 @@ }, "ZPosition": { "type": "float", - "value": 0.1999990940093994 + "value": 0.19999909400939941 } }, { @@ -51904,11 +51904,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -51919,11 +51919,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -51934,11 +51934,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -51949,11 +51949,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -51964,7 +51964,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -51983,7 +51983,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -51994,11 +51994,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -52013,7 +52013,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -52024,11 +52024,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -52039,11 +52039,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -52058,7 +52058,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -52073,7 +52073,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -52084,7 +52084,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -52099,11 +52099,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -52114,11 +52114,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -52129,11 +52129,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -52144,7 +52144,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -52159,7 +52159,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -52174,11 +52174,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -52189,11 +52189,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -52323,7 +52323,7 @@ }, "XPosition": { "type": "float", - "value": 95.31057739257813 + "value": 95.31057739257812 }, "YOrientation": { "type": "float", @@ -52339,7 +52339,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000000476837158 + "value": 0.20000004768371582 } }, { @@ -52367,11 +52367,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -52382,11 +52382,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -52397,11 +52397,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -52412,11 +52412,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -52427,7 +52427,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -52446,7 +52446,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -52457,11 +52457,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -52476,7 +52476,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -52487,11 +52487,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -52502,11 +52502,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -52521,7 +52521,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -52536,7 +52536,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -52547,7 +52547,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -52562,11 +52562,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -52577,11 +52577,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -52592,11 +52592,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -52607,7 +52607,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -52622,7 +52622,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -52637,11 +52637,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -52652,11 +52652,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -52802,7 +52802,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000010013580322 + "value": 0.20000100135803223 } }, { @@ -52830,11 +52830,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -52845,11 +52845,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -52860,11 +52860,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -52875,11 +52875,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -52890,7 +52890,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -52909,7 +52909,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -52920,11 +52920,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -52939,7 +52939,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -52950,11 +52950,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -52965,11 +52965,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -52984,7 +52984,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -52999,7 +52999,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -53010,7 +53010,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -53025,11 +53025,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -53040,11 +53040,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -53055,11 +53055,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -53070,7 +53070,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -53085,7 +53085,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -53100,11 +53100,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -53115,11 +53115,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -53265,7 +53265,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000000476837158 + "value": 0.20000004768371582 } }, { @@ -53293,11 +53293,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -53308,11 +53308,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -53323,11 +53323,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -53338,11 +53338,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -53353,7 +53353,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -53372,7 +53372,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -53383,11 +53383,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -53402,7 +53402,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -53413,11 +53413,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -53428,11 +53428,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -53447,7 +53447,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -53462,7 +53462,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -53473,7 +53473,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -53488,11 +53488,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -53503,11 +53503,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -53518,11 +53518,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -53533,7 +53533,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -53548,7 +53548,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -53563,11 +53563,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -53578,11 +53578,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -53728,7 +53728,7 @@ }, "ZPosition": { "type": "float", - "value": 0.1999990940093994 + "value": 0.19999909400939941 } }, { @@ -53756,11 +53756,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -53771,11 +53771,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -53786,11 +53786,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -53801,11 +53801,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -53816,7 +53816,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -53835,7 +53835,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -53846,11 +53846,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -53865,7 +53865,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -53876,11 +53876,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -53891,11 +53891,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -53910,7 +53910,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -53925,7 +53925,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -53936,7 +53936,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -53951,11 +53951,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -53966,11 +53966,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -53981,11 +53981,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -53996,7 +53996,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -54011,7 +54011,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -54026,11 +54026,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -54041,11 +54041,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -54175,7 +54175,7 @@ }, "XPosition": { "type": "float", - "value": 55.41921234130859 + "value": 55.419212341308594 }, "YOrientation": { "type": "float", @@ -54191,7 +54191,7 @@ }, "ZPosition": { "type": "float", - "value": 0.1999995708465576 + "value": 0.19999957084655762 } }, { @@ -54219,11 +54219,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -54234,11 +54234,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -54249,11 +54249,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -54264,11 +54264,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -54279,7 +54279,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -54298,7 +54298,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -54309,11 +54309,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -54328,7 +54328,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -54339,11 +54339,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -54354,11 +54354,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -54373,7 +54373,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -54388,7 +54388,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -54399,7 +54399,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -54414,11 +54414,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -54429,11 +54429,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -54444,11 +54444,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -54459,7 +54459,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -54474,7 +54474,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -54489,11 +54489,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -54504,11 +54504,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -54654,7 +54654,7 @@ }, "ZPosition": { "type": "float", - "value": 0.200002908706665 + "value": 0.20000290870666504 } }, { @@ -54682,11 +54682,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -54697,11 +54697,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -54712,11 +54712,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -54727,11 +54727,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -54742,7 +54742,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -54761,7 +54761,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -54772,11 +54772,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -54791,7 +54791,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -54802,11 +54802,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -54817,11 +54817,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -54836,7 +54836,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -54851,7 +54851,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -54862,7 +54862,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -54877,11 +54877,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -54892,11 +54892,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -54907,11 +54907,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -54922,7 +54922,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -54937,7 +54937,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -54952,11 +54952,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -54967,11 +54967,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -55145,11 +55145,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -55160,11 +55160,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -55175,11 +55175,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -55190,11 +55190,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -55205,7 +55205,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -55224,7 +55224,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -55235,11 +55235,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -55254,7 +55254,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -55265,11 +55265,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -55280,11 +55280,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -55299,7 +55299,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -55314,7 +55314,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -55325,7 +55325,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -55340,11 +55340,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -55355,11 +55355,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -55370,11 +55370,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -55385,7 +55385,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -55400,7 +55400,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -55415,11 +55415,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -55430,11 +55430,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -55564,7 +55564,7 @@ }, "XPosition": { "type": "float", - "value": 115.8500442504883 + "value": 115.85004425048828 }, "YOrientation": { "type": "float", @@ -55608,11 +55608,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -55623,11 +55623,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -55638,11 +55638,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -55653,11 +55653,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -55668,7 +55668,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -55687,7 +55687,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -55698,11 +55698,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -55717,7 +55717,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -55728,11 +55728,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -55743,11 +55743,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -55762,7 +55762,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -55777,7 +55777,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -55788,7 +55788,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -55803,11 +55803,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -55818,11 +55818,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -55833,11 +55833,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -55848,7 +55848,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -55863,7 +55863,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -55878,11 +55878,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -55893,11 +55893,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -56027,7 +56027,7 @@ }, "XPosition": { "type": "float", - "value": 45.49661254882813 + "value": 45.496612548828125 }, "YOrientation": { "type": "float", @@ -56035,7 +56035,7 @@ }, "YPosition": { "type": "float", - "value": 105.8790969848633 + "value": 105.87909698486328 }, "ZOrientation": { "type": "float", @@ -56043,7 +56043,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000019550323486 + "value": 0.20000195503234863 } }, { @@ -56071,11 +56071,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -56086,11 +56086,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -56101,11 +56101,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -56116,11 +56116,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -56131,7 +56131,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -56150,7 +56150,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -56161,11 +56161,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -56180,7 +56180,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -56191,11 +56191,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -56206,11 +56206,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -56225,7 +56225,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -56240,7 +56240,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -56251,7 +56251,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -56266,11 +56266,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -56281,11 +56281,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -56296,11 +56296,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -56311,7 +56311,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -56326,7 +56326,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -56341,11 +56341,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -56356,11 +56356,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -56506,7 +56506,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000000476837158 + "value": 0.20000004768371582 } }, { @@ -56534,11 +56534,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -56549,11 +56549,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -56564,11 +56564,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -56579,11 +56579,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -56594,7 +56594,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -56613,7 +56613,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -56624,11 +56624,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -56643,7 +56643,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -56654,11 +56654,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -56669,11 +56669,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -56688,7 +56688,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -56703,7 +56703,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -56714,7 +56714,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -56729,11 +56729,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -56744,11 +56744,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -56759,11 +56759,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -56774,7 +56774,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -56789,7 +56789,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -56804,11 +56804,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -56819,11 +56819,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -56997,11 +56997,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -57012,11 +57012,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -57027,11 +57027,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -57042,11 +57042,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -57057,7 +57057,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -57076,7 +57076,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -57087,11 +57087,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -57106,7 +57106,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -57117,11 +57117,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -57132,11 +57132,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -57151,7 +57151,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -57166,7 +57166,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -57177,7 +57177,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -57192,11 +57192,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -57207,11 +57207,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -57222,11 +57222,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -57237,7 +57237,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -57252,7 +57252,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -57267,11 +57267,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -57282,11 +57282,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -57424,7 +57424,7 @@ }, "YPosition": { "type": "float", - "value": 105.7379302978516 + "value": 105.73793029785156 }, "ZOrientation": { "type": "float", @@ -57460,11 +57460,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -57475,11 +57475,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -57490,11 +57490,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -57505,11 +57505,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -57520,7 +57520,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -57539,7 +57539,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -57550,11 +57550,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -57569,7 +57569,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -57580,11 +57580,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -57595,11 +57595,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -57614,7 +57614,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -57629,7 +57629,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -57640,7 +57640,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -57655,11 +57655,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -57670,11 +57670,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -57685,11 +57685,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -57700,7 +57700,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -57715,7 +57715,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -57730,11 +57730,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -57745,11 +57745,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -57879,7 +57879,7 @@ }, "XPosition": { "type": "float", - "value": 75.32766723632813 + "value": 75.32766723632812 }, "YOrientation": { "type": "float", @@ -57887,7 +57887,7 @@ }, "YPosition": { "type": "float", - "value": 115.6619567871094 + "value": 115.66195678710938 }, "ZOrientation": { "type": "float", @@ -57895,7 +57895,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000010013580322 + "value": 0.20000100135803223 } }, { @@ -57923,11 +57923,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -57938,11 +57938,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -57953,11 +57953,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -57968,11 +57968,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -57983,7 +57983,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -58002,7 +58002,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -58013,11 +58013,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -58032,7 +58032,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -58043,11 +58043,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -58058,11 +58058,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -58077,7 +58077,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -58092,7 +58092,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -58103,7 +58103,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -58118,11 +58118,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -58133,11 +58133,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -58148,11 +58148,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -58163,7 +58163,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -58178,7 +58178,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -58193,11 +58193,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -58208,11 +58208,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -58358,7 +58358,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000000476837158 + "value": 0.20000004768371582 } }, { @@ -58386,11 +58386,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -58401,11 +58401,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -58416,11 +58416,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -58431,11 +58431,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -58446,7 +58446,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -58465,7 +58465,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -58476,11 +58476,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -58495,7 +58495,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -58506,11 +58506,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -58521,11 +58521,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -58540,7 +58540,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -58555,7 +58555,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -58566,7 +58566,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -58581,11 +58581,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -58596,11 +58596,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -58611,11 +58611,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -58626,7 +58626,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -58641,7 +58641,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -58656,11 +58656,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -58671,11 +58671,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -58821,7 +58821,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000000476837158 + "value": 0.20000004768371582 } }, { @@ -58849,11 +58849,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -58864,11 +58864,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -58879,11 +58879,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -58894,11 +58894,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -58909,7 +58909,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -58928,7 +58928,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -58939,11 +58939,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -58958,7 +58958,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -58969,11 +58969,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -58984,11 +58984,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -59003,7 +59003,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -59018,7 +59018,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -59029,7 +59029,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -59044,11 +59044,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -59059,11 +59059,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -59074,11 +59074,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -59089,7 +59089,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -59104,7 +59104,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -59119,11 +59119,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -59134,11 +59134,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -59276,7 +59276,7 @@ }, "YPosition": { "type": "float", - "value": 115.885368347168 + "value": 115.88536834716797 }, "ZOrientation": { "type": "float", @@ -59312,11 +59312,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -59327,11 +59327,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -59342,11 +59342,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -59357,11 +59357,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -59372,7 +59372,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -59391,7 +59391,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -59402,11 +59402,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -59421,7 +59421,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -59432,11 +59432,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -59447,11 +59447,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -59466,7 +59466,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -59481,7 +59481,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -59492,7 +59492,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -59507,11 +59507,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -59522,11 +59522,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -59537,11 +59537,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -59552,7 +59552,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -59567,7 +59567,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -59582,11 +59582,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -59597,11 +59597,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -59731,7 +59731,7 @@ }, "XPosition": { "type": "float", - "value": 25.69202041625977 + "value": 25.692020416259766 }, "YOrientation": { "type": "float", @@ -59747,7 +59747,7 @@ }, "ZPosition": { "type": "float", - "value": 0.200000524520874 + "value": 0.20000052452087402 } }, { @@ -59775,11 +59775,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -59790,11 +59790,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -59805,11 +59805,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -59820,11 +59820,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -59835,7 +59835,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -59854,7 +59854,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -59865,11 +59865,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -59884,7 +59884,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -59895,11 +59895,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -59910,11 +59910,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -59929,7 +59929,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -59944,7 +59944,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -59955,7 +59955,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -59970,11 +59970,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -59985,11 +59985,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -60000,11 +60000,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -60015,7 +60015,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -60030,7 +60030,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -60045,11 +60045,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -60060,11 +60060,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -60194,7 +60194,7 @@ }, "XPosition": { "type": "float", - "value": 35.42366790771484 + "value": 35.423667907714844 }, "YOrientation": { "type": "float", @@ -60202,7 +60202,7 @@ }, "YPosition": { "type": "float", - "value": 116.1967849731445 + "value": 116.19678497314453 }, "ZOrientation": { "type": "float", @@ -60210,7 +60210,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000000476837158 + "value": 0.20000004768371582 } }, { @@ -60238,11 +60238,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -60253,11 +60253,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -60268,11 +60268,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -60283,11 +60283,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -60298,7 +60298,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -60317,7 +60317,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -60328,11 +60328,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -60347,7 +60347,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -60358,11 +60358,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -60373,11 +60373,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -60392,7 +60392,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -60407,7 +60407,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -60418,7 +60418,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -60433,11 +60433,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -60448,11 +60448,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -60463,11 +60463,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -60478,7 +60478,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -60493,7 +60493,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -60508,11 +60508,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -60523,11 +60523,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -60673,7 +60673,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000000476837158 + "value": 0.20000004768371582 } }, { @@ -60701,11 +60701,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -60716,11 +60716,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -60731,11 +60731,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -60746,11 +60746,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -60761,7 +60761,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -60780,7 +60780,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -60791,11 +60791,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -60810,7 +60810,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -60821,11 +60821,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -60836,11 +60836,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -60855,7 +60855,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -60870,7 +60870,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -60881,7 +60881,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -60896,11 +60896,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -60911,11 +60911,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -60926,11 +60926,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -60941,7 +60941,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -60956,7 +60956,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -60971,11 +60971,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -60986,11 +60986,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -61120,7 +61120,7 @@ }, "XPosition": { "type": "float", - "value": 125.3302383422852 + "value": 125.33023834228516 }, "YOrientation": { "type": "float", @@ -61136,7 +61136,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000038623809815 + "value": 0.20000386238098145 } }, { @@ -61164,11 +61164,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -61179,11 +61179,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -61194,11 +61194,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -61209,11 +61209,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -61224,7 +61224,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -61243,7 +61243,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -61254,11 +61254,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -61273,7 +61273,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -61284,11 +61284,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -61299,11 +61299,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -61318,7 +61318,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -61333,7 +61333,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -61344,7 +61344,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -61359,11 +61359,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -61374,11 +61374,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -61389,11 +61389,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -61404,7 +61404,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -61419,7 +61419,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -61434,11 +61434,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -61449,11 +61449,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -61583,7 +61583,7 @@ }, "XPosition": { "type": "float", - "value": 145.4843902587891 + "value": 145.48439025878906 }, "YOrientation": { "type": "float", @@ -61591,7 +61591,7 @@ }, "YPosition": { "type": "float", - "value": 105.801155090332 + "value": 105.80115509033203 }, "ZOrientation": { "type": "float", @@ -61599,7 +61599,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000038623809815 + "value": 0.20000386238098145 } }, { @@ -61627,11 +61627,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -61642,11 +61642,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -61657,11 +61657,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -61672,11 +61672,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -61687,7 +61687,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -61706,7 +61706,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -61717,11 +61717,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -61736,7 +61736,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -61747,11 +61747,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -61762,11 +61762,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -61781,7 +61781,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -61796,7 +61796,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -61807,7 +61807,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -61822,11 +61822,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -61837,11 +61837,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -61852,11 +61852,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -61867,7 +61867,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -61882,7 +61882,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -61897,11 +61897,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -61912,11 +61912,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -62054,7 +62054,7 @@ }, "YPosition": { "type": "float", - "value": 105.801155090332 + "value": 105.80115509033203 }, "ZOrientation": { "type": "float", @@ -62062,7 +62062,7 @@ }, "ZPosition": { "type": "float", - "value": 0.1999990940093994 + "value": 0.19999909400939941 } }, { @@ -62090,11 +62090,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -62105,11 +62105,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -62120,11 +62120,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -62135,11 +62135,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -62150,7 +62150,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -62169,7 +62169,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -62180,11 +62180,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -62199,7 +62199,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -62210,11 +62210,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -62225,11 +62225,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -62244,7 +62244,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -62259,7 +62259,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -62270,7 +62270,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -62285,11 +62285,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -62300,11 +62300,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -62315,11 +62315,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -62330,7 +62330,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -62345,7 +62345,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -62360,11 +62360,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -62375,11 +62375,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -62517,7 +62517,7 @@ }, "YPosition": { "type": "float", - "value": 105.9706726074219 + "value": 105.97067260742188 }, "ZOrientation": { "type": "float", @@ -62525,7 +62525,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000000476837158 + "value": 0.20000004768371582 } }, { @@ -62553,11 +62553,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -62568,11 +62568,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -62583,11 +62583,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -62598,11 +62598,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -62613,7 +62613,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -62632,7 +62632,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -62643,11 +62643,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -62662,7 +62662,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -62673,11 +62673,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -62688,11 +62688,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -62707,7 +62707,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -62722,7 +62722,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -62733,7 +62733,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -62748,11 +62748,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -62763,11 +62763,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -62778,11 +62778,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -62793,7 +62793,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -62808,7 +62808,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -62823,11 +62823,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -62838,11 +62838,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -62972,7 +62972,7 @@ }, "XPosition": { "type": "float", - "value": 45.49099731445313 + "value": 45.490997314453125 }, "YOrientation": { "type": "float", @@ -62988,7 +62988,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000000476837158 + "value": 0.20000004768371582 } }, { @@ -63016,11 +63016,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -63031,11 +63031,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -63046,11 +63046,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -63061,11 +63061,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -63076,7 +63076,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -63095,7 +63095,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -63106,11 +63106,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -63125,7 +63125,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -63136,11 +63136,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -63151,11 +63151,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -63170,7 +63170,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -63185,7 +63185,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -63196,7 +63196,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -63211,11 +63211,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -63226,11 +63226,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -63241,11 +63241,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -63256,7 +63256,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -63271,7 +63271,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -63286,11 +63286,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -63301,11 +63301,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -63443,7 +63443,7 @@ }, "YPosition": { "type": "float", - "value": 126.0774993896484 + "value": 126.07749938964844 }, "ZOrientation": { "type": "float", @@ -63479,11 +63479,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -63494,11 +63494,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -63509,11 +63509,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -63524,11 +63524,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -63539,7 +63539,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -63558,7 +63558,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -63569,11 +63569,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -63588,7 +63588,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -63599,11 +63599,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -63614,11 +63614,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -63633,7 +63633,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -63648,7 +63648,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -63659,7 +63659,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -63674,11 +63674,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -63689,11 +63689,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -63704,11 +63704,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -63719,7 +63719,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -63734,7 +63734,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -63749,11 +63749,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -63764,11 +63764,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -63914,7 +63914,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000000476837158 + "value": 0.20000004768371582 } }, { @@ -63942,11 +63942,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -63957,11 +63957,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -63972,11 +63972,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -63987,11 +63987,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -64002,7 +64002,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -64021,7 +64021,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -64032,11 +64032,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -64051,7 +64051,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -64062,11 +64062,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -64077,11 +64077,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -64096,7 +64096,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -64111,7 +64111,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -64122,7 +64122,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -64137,11 +64137,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -64152,11 +64152,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -64167,11 +64167,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -64182,7 +64182,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -64197,7 +64197,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -64212,11 +64212,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -64227,11 +64227,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -64369,7 +64369,7 @@ }, "YPosition": { "type": "float", - "value": 135.7021789550781 + "value": 135.70217895507812 }, "ZOrientation": { "type": "float", @@ -64377,7 +64377,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000000476837158 + "value": 0.20000004768371582 } }, { @@ -64405,11 +64405,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -64420,11 +64420,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -64435,11 +64435,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -64450,11 +64450,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -64465,7 +64465,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -64484,7 +64484,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -64495,11 +64495,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -64514,7 +64514,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -64525,11 +64525,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -64540,11 +64540,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -64559,7 +64559,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -64574,7 +64574,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -64585,7 +64585,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -64600,11 +64600,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -64615,11 +64615,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -64630,11 +64630,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -64645,7 +64645,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -64660,7 +64660,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -64675,11 +64675,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -64690,11 +64690,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -64840,7 +64840,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000010013580322 + "value": 0.20000100135803223 } }, { @@ -64868,11 +64868,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -64883,11 +64883,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -64898,11 +64898,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -64913,11 +64913,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -64928,7 +64928,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -64947,7 +64947,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -64958,11 +64958,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -64977,7 +64977,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -64988,11 +64988,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -65003,11 +65003,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -65022,7 +65022,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -65037,7 +65037,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -65048,7 +65048,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -65063,11 +65063,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -65078,11 +65078,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -65093,11 +65093,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -65108,7 +65108,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -65123,7 +65123,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -65138,11 +65138,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -65153,11 +65153,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -65303,7 +65303,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000010013580322 + "value": 0.20000100135803223 } }, { @@ -65331,11 +65331,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -65346,11 +65346,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -65361,11 +65361,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -65376,11 +65376,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -65391,7 +65391,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -65410,7 +65410,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -65421,11 +65421,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -65440,7 +65440,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -65451,11 +65451,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -65466,11 +65466,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -65485,7 +65485,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -65500,7 +65500,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -65511,7 +65511,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -65526,11 +65526,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -65541,11 +65541,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -65556,11 +65556,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -65571,7 +65571,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -65586,7 +65586,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -65601,11 +65601,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -65616,11 +65616,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -65794,11 +65794,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -65809,11 +65809,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -65824,11 +65824,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -65839,11 +65839,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -65854,7 +65854,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -65873,7 +65873,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -65884,11 +65884,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -65903,7 +65903,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -65914,11 +65914,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -65929,11 +65929,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -65948,7 +65948,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -65963,7 +65963,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -65974,7 +65974,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -65989,11 +65989,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -66004,11 +66004,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -66019,11 +66019,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -66034,7 +66034,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -66049,7 +66049,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -66064,11 +66064,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -66079,11 +66079,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -66221,7 +66221,7 @@ }, "YPosition": { "type": "float", - "value": 145.8047485351563 + "value": 145.80474853515625 }, "ZOrientation": { "type": "float", @@ -66229,7 +66229,7 @@ }, "ZPosition": { "type": "float", - "value": 0.1999990940093994 + "value": 0.19999909400939941 } }, { @@ -66257,11 +66257,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -66272,11 +66272,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -66287,11 +66287,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -66302,11 +66302,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -66317,7 +66317,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -66336,7 +66336,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -66347,11 +66347,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -66366,7 +66366,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -66377,11 +66377,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -66392,11 +66392,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -66411,7 +66411,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -66426,7 +66426,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -66437,7 +66437,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -66452,11 +66452,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -66467,11 +66467,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -66482,11 +66482,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -66497,7 +66497,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -66512,7 +66512,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -66527,11 +66527,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -66542,11 +66542,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -66684,7 +66684,7 @@ }, "YPosition": { "type": "float", - "value": 155.8001403808594 + "value": 155.80014038085938 }, "ZOrientation": { "type": "float", @@ -66692,7 +66692,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000000476837158 + "value": 0.20000004768371582 } }, { @@ -66720,11 +66720,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -66735,11 +66735,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -66750,11 +66750,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -66765,11 +66765,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -66780,7 +66780,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -66799,7 +66799,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -66810,11 +66810,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -66829,7 +66829,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -66840,11 +66840,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -66855,11 +66855,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -66874,7 +66874,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -66889,7 +66889,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -66900,7 +66900,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -66915,11 +66915,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -66930,11 +66930,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -66945,11 +66945,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -66960,7 +66960,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -66975,7 +66975,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -66990,11 +66990,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -67005,11 +67005,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -67139,7 +67139,7 @@ }, "XPosition": { "type": "float", - "value": 25.75152397155762 + "value": 25.751523971557617 }, "YOrientation": { "type": "float", @@ -67147,7 +67147,7 @@ }, "YPosition": { "type": "float", - "value": 155.7629089355469 + "value": 155.76290893554688 }, "ZOrientation": { "type": "float", @@ -67155,7 +67155,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000010013580322 + "value": 0.20000100135803223 } }, { @@ -67183,11 +67183,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -67198,11 +67198,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -67213,11 +67213,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -67228,11 +67228,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -67243,7 +67243,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -67262,7 +67262,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -67273,11 +67273,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -67292,7 +67292,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -67303,11 +67303,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -67318,11 +67318,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -67337,7 +67337,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -67352,7 +67352,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -67363,7 +67363,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -67378,11 +67378,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -67393,11 +67393,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -67408,11 +67408,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -67423,7 +67423,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -67438,7 +67438,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -67453,11 +67453,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -67468,11 +67468,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -67610,7 +67610,7 @@ }, "YPosition": { "type": "float", - "value": 135.7196350097656 + "value": 135.71963500976562 }, "ZOrientation": { "type": "float", @@ -67618,7 +67618,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000000476837158 + "value": 0.20000004768371582 } }, { @@ -67646,11 +67646,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -67661,11 +67661,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -67676,11 +67676,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -67691,11 +67691,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -67706,7 +67706,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -67725,7 +67725,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -67736,11 +67736,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -67755,7 +67755,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -67766,11 +67766,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -67781,11 +67781,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -67800,7 +67800,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -67815,7 +67815,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -67826,7 +67826,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -67841,11 +67841,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -67856,11 +67856,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -67871,11 +67871,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -67886,7 +67886,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -67901,7 +67901,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -67916,11 +67916,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -67931,11 +67931,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -68073,7 +68073,7 @@ }, "YPosition": { "type": "float", - "value": 136.1657562255859 + "value": 136.16575622558594 }, "ZOrientation": { "type": "float", @@ -68081,7 +68081,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000000476837158 + "value": 0.20000004768371582 } }, { @@ -68109,11 +68109,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -68124,11 +68124,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -68139,11 +68139,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -68154,11 +68154,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -68169,7 +68169,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -68188,7 +68188,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -68199,11 +68199,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -68218,7 +68218,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -68229,11 +68229,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -68244,11 +68244,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -68263,7 +68263,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -68278,7 +68278,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -68289,7 +68289,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -68304,11 +68304,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -68319,11 +68319,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -68334,11 +68334,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -68349,7 +68349,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -68364,7 +68364,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -68379,11 +68379,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -68394,11 +68394,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -68544,7 +68544,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000000476837158 + "value": 0.20000004768371582 } }, { @@ -68572,11 +68572,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -68587,11 +68587,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -68602,11 +68602,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -68617,11 +68617,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -68632,7 +68632,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -68651,7 +68651,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -68662,11 +68662,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -68681,7 +68681,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -68692,11 +68692,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -68707,11 +68707,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -68726,7 +68726,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -68741,7 +68741,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -68752,7 +68752,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -68767,11 +68767,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -68782,11 +68782,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -68797,11 +68797,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -68812,7 +68812,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -68827,7 +68827,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -68842,11 +68842,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -68857,11 +68857,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -68991,7 +68991,7 @@ }, "XPosition": { "type": "float", - "value": 95.34055328369141 + "value": 95.3405532836914 }, "YOrientation": { "type": "float", @@ -69007,7 +69007,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000019550323486 + "value": 0.20000195503234863 } }, { @@ -69035,11 +69035,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -69050,11 +69050,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -69065,11 +69065,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -69080,11 +69080,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -69095,7 +69095,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -69114,7 +69114,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -69125,11 +69125,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -69144,7 +69144,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -69155,11 +69155,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -69170,11 +69170,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -69189,7 +69189,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -69204,7 +69204,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -69215,7 +69215,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -69230,11 +69230,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -69245,11 +69245,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -69260,11 +69260,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -69275,7 +69275,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -69290,7 +69290,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -69305,11 +69305,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -69320,11 +69320,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -69470,7 +69470,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000000476837158 + "value": 0.20000004768371582 } }, { @@ -69498,11 +69498,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -69513,11 +69513,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -69528,11 +69528,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -69543,11 +69543,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -69558,7 +69558,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -69577,7 +69577,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -69588,11 +69588,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -69607,7 +69607,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -69618,11 +69618,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -69633,11 +69633,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -69652,7 +69652,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -69667,7 +69667,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -69678,7 +69678,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -69693,11 +69693,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -69708,11 +69708,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -69723,11 +69723,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -69738,7 +69738,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -69753,7 +69753,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -69768,11 +69768,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -69783,11 +69783,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -69917,7 +69917,7 @@ }, "XPosition": { "type": "float", - "value": 85.70761871337891 + "value": 85.7076187133789 }, "YOrientation": { "type": "float", @@ -69925,7 +69925,7 @@ }, "YPosition": { "type": "float", - "value": 145.5891265869141 + "value": 145.58912658691406 }, "ZOrientation": { "type": "float", @@ -69933,7 +69933,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000000476837158 + "value": 0.20000004768371582 } }, { @@ -69961,11 +69961,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -69976,11 +69976,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -69991,11 +69991,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -70006,11 +70006,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -70021,7 +70021,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -70040,7 +70040,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -70051,11 +70051,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -70070,7 +70070,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -70081,11 +70081,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -70096,11 +70096,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -70115,7 +70115,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -70130,7 +70130,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -70141,7 +70141,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -70156,11 +70156,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -70171,11 +70171,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -70186,11 +70186,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -70201,7 +70201,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -70216,7 +70216,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -70231,11 +70231,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -70246,11 +70246,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -70388,7 +70388,7 @@ }, "YPosition": { "type": "float", - "value": 145.9153137207031 + "value": 145.91531372070312 }, "ZOrientation": { "type": "float", @@ -70396,7 +70396,7 @@ }, "ZPosition": { "type": "float", - "value": 0.200000524520874 + "value": 0.20000052452087402 } }, { @@ -70424,11 +70424,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.025417327880859 + "value": -3.0254173278808594 }, "PointY": { "type": "float", - "value": 1.006362915039063 + "value": 1.0063629150390625 }, "PointZ": { "type": "float", @@ -70439,11 +70439,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.512710571289063 + "value": -1.5127105712890625 }, "PointY": { "type": "float", - "value": -0.4936904907226563 + "value": -0.49369049072265625 }, "PointZ": { "type": "float", @@ -70454,11 +70454,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.519039154052734 + "value": -1.5190391540527344 }, "PointY": { "type": "float", - "value": -1.481063842773438 + "value": -1.4810638427734375 }, "PointZ": { "type": "float", @@ -70469,11 +70469,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.010276794433594 + "value": -3.0102767944335938 }, "PointY": { "type": "float", - "value": -2.999496459960938 + "value": -2.9994964599609375 }, "PointZ": { "type": "float", @@ -70484,7 +70484,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.022621154785156 + "value": -3.0226211547851562 }, "PointY": { "type": "float", @@ -70503,7 +70503,7 @@ }, "PointY": { "type": "float", - "value": -3.499496459960938 + "value": -3.4994964599609375 }, "PointZ": { "type": "float", @@ -70514,11 +70514,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.010269165039063 + "value": -1.0102691650390625 }, "PointY": { "type": "float", - "value": -1.987144470214844 + "value": -1.9871444702148438 }, "PointZ": { "type": "float", @@ -70533,7 +70533,7 @@ }, "PointY": { "type": "float", - "value": -1.987148284912109 + "value": -1.9871482849121094 }, "PointZ": { "type": "float", @@ -70544,11 +70544,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.511528015136719 + "value": 1.5115280151367188 }, "PointY": { "type": "float", - "value": -3.480979919433594 + "value": -3.4809799194335938 }, "PointZ": { "type": "float", @@ -70559,11 +70559,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999183654785156 + "value": 1.9991836547851562 }, "PointY": { "type": "float", - "value": -3.493324279785156 + "value": -3.4933242797851562 }, "PointZ": { "type": "float", @@ -70578,7 +70578,7 @@ }, "PointY": { "type": "float", - "value": -2.993324279785156 + "value": -2.9933242797851562 }, "PointZ": { "type": "float", @@ -70593,7 +70593,7 @@ }, "PointY": { "type": "float", - "value": -1.487144470214844 + "value": -1.4871444702148438 }, "PointZ": { "type": "float", @@ -70604,7 +70604,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.4930038452148438 + "value": 0.49300384521484375 }, "PointY": { "type": "float", @@ -70619,11 +70619,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.999927520751953 + "value": 1.9999275207519531 }, "PointY": { "type": "float", - "value": 1.015377044677734 + "value": 1.0153770446777344 }, "PointZ": { "type": "float", @@ -70634,11 +70634,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 2.007808685302734 + "value": 2.0078086853027344 }, "PointY": { "type": "float", - "value": 1.519588470458984 + "value": 1.5195884704589844 }, "PointZ": { "type": "float", @@ -70649,11 +70649,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 1.487838745117188 + "value": 1.4878387451171875 }, "PointY": { "type": "float", - "value": 1.527469635009766 + "value": 1.5274696350097656 }, "PointZ": { "type": "float", @@ -70664,7 +70664,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -0.01651382446289063 + "value": -0.016513824462890625 }, "PointY": { "type": "float", @@ -70679,7 +70679,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -1.012691497802734 + "value": -1.0126914978027344 }, "PointY": { "type": "float", @@ -70694,11 +70694,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.531734466552734 + "value": -2.5317344665527344 }, "PointY": { "type": "float", - "value": 1.512706756591797 + "value": 1.5127067565917969 }, "PointZ": { "type": "float", @@ -70709,11 +70709,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.012760162353516 + "value": -3.0127601623535156 }, "PointY": { "type": "float", - "value": 1.519035339355469 + "value": 1.5190353393554688 }, "PointZ": { "type": "float", @@ -70851,7 +70851,7 @@ }, "YPosition": { "type": "float", - "value": 116.0966491699219 + "value": 116.09664916992188 }, "ZOrientation": { "type": "float", @@ -70859,7 +70859,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000000476837158 + "value": 0.20000004768371582 } }, { @@ -70902,7 +70902,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.003210067749023438 + "value": 0.0032100677490234375 }, "PointY": { "type": "float", @@ -70921,7 +70921,7 @@ }, "PointY": { "type": "float", - "value": -4.02381181716919 + "value": -4.0238118171691895 }, "PointZ": { "type": "float", @@ -71074,7 +71074,7 @@ }, "YPosition": { "type": "float", - "value": 156.9161987304688 + "value": 156.91619873046875 }, "ZOrientation": { "type": "float", @@ -71118,14 +71118,14 @@ }, "PointZ": { "type": "float", - "value": 0.2250001728534699 + "value": 0.22500017285346985 } }, { "__struct_id": 3, "PointX": { "type": "float", - "value": 0.003210067749023438 + "value": 0.0032100677490234375 }, "PointY": { "type": "float", @@ -71144,7 +71144,7 @@ }, "PointY": { "type": "float", - "value": -4.02381181716919 + "value": -4.0238118171691895 }, "PointZ": { "type": "float", @@ -71289,7 +71289,7 @@ }, "XPosition": { "type": "float", - "value": 127.4393997192383 + "value": 127.43939971923828 }, "YOrientation": { "type": "float", @@ -71305,7 +71305,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000000476837158 + "value": 0.20000004768371582 } }, { @@ -71348,7 +71348,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.003210067749023438 + "value": 0.0032100677490234375 }, "PointY": { "type": "float", @@ -71367,7 +71367,7 @@ }, "PointY": { "type": "float", - "value": -4.02381181716919 + "value": -4.0238118171691895 }, "PointZ": { "type": "float", @@ -71512,7 +71512,7 @@ }, "XPosition": { "type": "float", - "value": 37.38794326782227 + "value": 37.387943267822266 }, "YOrientation": { "type": "float", @@ -71520,7 +71520,7 @@ }, "YPosition": { "type": "float", - "value": 146.9919738769531 + "value": 146.99197387695312 }, "ZOrientation": { "type": "float", @@ -71528,7 +71528,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000000476837158 + "value": 0.20000004768371582 } }, { @@ -71571,7 +71571,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.003210067749023438 + "value": 0.0032100677490234375 }, "PointY": { "type": "float", @@ -71590,11 +71590,11 @@ }, "PointY": { "type": "float", - "value": -4.02381181716919 + "value": -4.0238118171691895 }, "PointZ": { "type": "float", - "value": 0.4688006937503815 + "value": 0.46880069375038147 } }, { @@ -71743,7 +71743,7 @@ }, "YPosition": { "type": "float", - "value": 21.14060592651367 + "value": 21.140605926513672 }, "ZOrientation": { "type": "float", @@ -71794,7 +71794,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.003210067749023438 + "value": 0.0032100677490234375 }, "PointY": { "type": "float", @@ -71813,11 +71813,11 @@ }, "PointY": { "type": "float", - "value": -4.02381181716919 + "value": -4.0238118171691895 }, "PointZ": { "type": "float", - "value": 0.2707840502262116 + "value": 0.27078405022621155 } }, { @@ -71958,7 +71958,7 @@ }, "XPosition": { "type": "float", - "value": 92.99277496337891 + "value": 92.9927749633789 }, "YOrientation": { "type": "float", @@ -71974,7 +71974,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000000476837158 + "value": 0.20000004768371582 } }, { @@ -72017,7 +72017,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.003210067749023438 + "value": 0.0032100677490234375 }, "PointY": { "type": "float", @@ -72036,11 +72036,11 @@ }, "PointY": { "type": "float", - "value": -4.02381181716919 + "value": -4.0238118171691895 }, "PointZ": { "type": "float", - "value": 0.3958608210086823 + "value": 0.39586082100868225 } }, { @@ -72197,7 +72197,7 @@ }, "ZPosition": { "type": "float", - "value": 0.1999990940093994 + "value": 0.19999909400939941 } }, { @@ -72240,7 +72240,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.003210067749023438 + "value": 0.0032100677490234375 }, "PointY": { "type": "float", @@ -72259,11 +72259,11 @@ }, "PointY": { "type": "float", - "value": -4.02381181716919 + "value": -4.0238118171691895 }, "PointZ": { "type": "float", - "value": 0.3958608210086823 + "value": 0.39586082100868225 } }, { @@ -72404,7 +72404,7 @@ }, "XPosition": { "type": "float", - "value": 139.1716156005859 + "value": 139.17161560058594 }, "YOrientation": { "type": "float", @@ -72412,7 +72412,7 @@ }, "YPosition": { "type": "float", - "value": 16.96518707275391 + "value": 16.965187072753906 }, "ZOrientation": { "type": "float", @@ -72420,7 +72420,7 @@ }, "ZPosition": { "type": "float", - "value": 0.1999990940093994 + "value": 0.19999909400939941 } }, { @@ -72463,7 +72463,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.003210067749023438 + "value": 0.0032100677490234375 }, "PointY": { "type": "float", @@ -72482,11 +72482,11 @@ }, "PointY": { "type": "float", - "value": -4.02381181716919 + "value": -4.0238118171691895 }, "PointZ": { "type": "float", - "value": 0.3958608210086823 + "value": 0.39586082100868225 } }, { @@ -72643,7 +72643,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000000476837158 + "value": 0.20000004768371582 } }, { @@ -72686,7 +72686,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.003210067749023438 + "value": 0.0032100677490234375 }, "PointY": { "type": "float", @@ -72705,11 +72705,11 @@ }, "PointY": { "type": "float", - "value": -4.02381181716919 + "value": -4.0238118171691895 }, "PointZ": { "type": "float", - "value": 0.3958608210086823 + "value": 0.39586082100868225 } }, { @@ -72850,7 +72850,7 @@ }, "XPosition": { "type": "float", - "value": 48.66843414306641 + "value": 48.668434143066406 }, "YOrientation": { "type": "float", @@ -72866,7 +72866,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000000476837158 + "value": 0.20000004768371582 } } ] @@ -72945,7 +72945,7 @@ }, "YOrientation": { "type": "float", - "value": 1.148381556959066e-006 + "value": 0.000001148381556959066 }, "YPosition": { "type": "float", @@ -72953,7 +72953,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2099999934434891 + "value": 0.20999999344348907 } }, { @@ -73007,7 +73007,7 @@ }, "YOrientation": { "type": "float", - "value": 1.148381556959066e-006 + "value": 0.000001148381556959066 }, "YPosition": { "type": "float", @@ -73015,7 +73015,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2099999934434891 + "value": 0.20999999344348907 } }, { @@ -73069,7 +73069,7 @@ }, "YOrientation": { "type": "float", - "value": 1.148381556959066e-006 + "value": 0.000001148381556959066 }, "YPosition": { "type": "float", @@ -73077,7 +73077,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2099999934434891 + "value": 0.20999999344348907 } }, { @@ -73131,7 +73131,7 @@ }, "YOrientation": { "type": "float", - "value": 1.148381556959066e-006 + "value": 0.000001148381556959066 }, "YPosition": { "type": "float", @@ -73139,7 +73139,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2099999934434891 + "value": 0.20999999344348907 } }, { @@ -73193,7 +73193,7 @@ }, "YOrientation": { "type": "float", - "value": 1.148381556959066e-006 + "value": 0.000001148381556959066 }, "YPosition": { "type": "float", @@ -73201,7 +73201,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2099999934434891 + "value": 0.20999999344348907 } }, { @@ -73263,7 +73263,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2099999934434891 + "value": 0.20999999344348907 } }, { @@ -73309,7 +73309,7 @@ }, "XOrientation": { "type": "float", - "value": 2.773600272121257e-006 + "value": 0.000002773600272121257 }, "XPosition": { "type": "float", @@ -73325,7 +73325,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2099999934434891 + "value": 0.20999999344348907 } }, { @@ -73379,7 +73379,7 @@ }, "YOrientation": { "type": "float", - "value": 1.148381556959066e-006 + "value": 0.000001148381556959066 }, "YPosition": { "type": "float", @@ -73387,7 +73387,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2099999934434891 + "value": 0.20999999344348907 } }, { @@ -73441,7 +73441,7 @@ }, "YOrientation": { "type": "float", - "value": 1.148381556959066e-006 + "value": 0.000001148381556959066 }, "YPosition": { "type": "float", @@ -73449,7 +73449,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2000000029802322 + "value": 0.20000000298023224 } }, { @@ -73511,7 +73511,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2099999934434891 + "value": 0.20999999344348907 } }, { @@ -73627,7 +73627,7 @@ }, "YOrientation": { "type": "float", - "value": 1.148381556959066e-006 + "value": 0.000001148381556959066 }, "YPosition": { "type": "float", @@ -73635,7 +73635,7 @@ }, "ZPosition": { "type": "float", - "value": 0.2099999934434891 + "value": 0.20999999344348907 } }, { @@ -73689,7 +73689,7 @@ }, "YOrientation": { "type": "float", - "value": 1.148381556959066e-006 + "value": 0.000001148381556959066 }, "YPosition": { "type": "float", diff --git a/_module/git/ruinedminds001.git.json b/_module/git/ruinedminds001.git.json index 75591c2..96f14e5 100644 --- a/_module/git/ruinedminds001.git.json +++ b/_module/git/ruinedminds001.git.json @@ -66,7 +66,7 @@ }, "Bearing": { "type": "float", - "value": 1.570795655250549 + "value": 1.5707956552505493 }, "CloseLockDC": { "type": "byte", @@ -264,7 +264,7 @@ }, "Z": { "type": "float", - "value": 0.2000000029802322 + "value": 0.20000000298023224 } }, { @@ -926,7 +926,7 @@ }, "X": { "type": "float", - "value": 15.04899024963379 + "value": 15.048990249633789 }, "Y": { "type": "float", @@ -1155,11 +1155,11 @@ }, "Y": { "type": "float", - "value": 74.52798461914063 + "value": 74.52798461914062 }, "Z": { "type": "float", - "value": 0.2000002861022949 + "value": 0.20000028610229492 } } ] @@ -1281,11 +1281,11 @@ }, "YPosition": { "type": "float", - "value": 24.88151931762695 + "value": 24.881519317626953 }, "ZPosition": { "type": "float", - "value": 3.12960410118103 + "value": 3.1296041011810303 } }, { @@ -1406,7 +1406,7 @@ }, "ZPosition": { "type": "float", - "value": -1.50000524520874 + "value": -1.5000052452087402 } }, { @@ -1519,7 +1519,7 @@ }, "XPosition": { "type": "float", - "value": 48.06650543212891 + "value": 48.066505432128906 }, "YPosition": { "type": "float", @@ -1527,7 +1527,7 @@ }, "ZPosition": { "type": "float", - "value": 1.500000476837158 + "value": 1.5000004768371582 } }, { @@ -1580,7 +1580,7 @@ }, "PitchVariation": { "type": "float", - "value": 0.2000000029802322 + "value": 0.20000000298023224 }, "Positional": { "type": "byte", @@ -1658,11 +1658,11 @@ }, "YPosition": { "type": "float", - "value": 14.52048015594482 + "value": 14.520480155944824 }, "ZPosition": { "type": "float", - "value": 1.388710021972656 + "value": 1.3887100219726562 } }, { @@ -1779,11 +1779,11 @@ }, "YPosition": { "type": "float", - "value": 65.12294769287109 + "value": 65.1229476928711 }, "ZPosition": { "type": "float", - "value": 2.100000381469727 + "value": 2.1000003814697266 } }, { @@ -1836,7 +1836,7 @@ }, "PitchVariation": { "type": "float", - "value": 0.300000011920929 + "value": 0.30000001192092896 }, "Positional": { "type": "byte", @@ -1924,7 +1924,7 @@ }, "XPosition": { "type": "float", - "value": 14.92038059234619 + "value": 14.920380592346191 }, "YPosition": { "type": "float", @@ -1932,7 +1932,7 @@ }, "ZPosition": { "type": "float", - "value": 1.299999833106995 + "value": 1.2999998331069946 } }, { @@ -1985,7 +1985,7 @@ }, "PitchVariation": { "type": "float", - "value": 0.300000011920929 + "value": 0.30000001192092896 }, "Positional": { "type": "byte", @@ -2094,7 +2094,7 @@ }, "XPosition": { "type": "float", - "value": 14.92793464660645 + "value": 14.927934646606445 }, "YPosition": { "type": "float", @@ -2102,7 +2102,7 @@ }, "ZPosition": { "type": "float", - "value": 1.400000095367432 + "value": 1.4000000953674316 } }, { @@ -2215,7 +2215,7 @@ }, "XPosition": { "type": "float", - "value": 34.48321914672852 + "value": 34.483219146728516 }, "YPosition": { "type": "float", @@ -2223,7 +2223,7 @@ }, "ZPosition": { "type": "float", - "value": 1.899991393089294 + "value": 1.8999913930892944 } }, { @@ -2340,7 +2340,7 @@ }, "YPosition": { "type": "float", - "value": 40.13705444335938 + "value": 40.137054443359375 }, "ZPosition": { "type": "float", @@ -2457,7 +2457,7 @@ }, "XPosition": { "type": "float", - "value": 35.51938629150391 + "value": 35.519386291503906 }, "YPosition": { "type": "float", @@ -2465,7 +2465,7 @@ }, "ZPosition": { "type": "float", - "value": 1.899991393089294 + "value": 1.8999913930892944 } }, { @@ -2586,7 +2586,7 @@ }, "ZPosition": { "type": "float", - "value": 1.900000095367432 + "value": 1.9000000953674316 } }, { @@ -2721,7 +2721,7 @@ }, "ZPosition": { "type": "float", - "value": 1.830684065818787 + "value": 1.8306840658187866 } } ] diff --git a/_module/git/theforestroad.git.json b/_module/git/theforestroad.git.json index 87f84ba..080bc50 100644 --- a/_module/git/theforestroad.git.json +++ b/_module/git/theforestroad.git.json @@ -1944,7 +1944,7 @@ }, "XPosition": { "type": "float", - "value": 51.87747192382813 + "value": 51.877471923828125 }, "YOrientation": { "type": "float", @@ -1956,7 +1956,7 @@ }, "ZPosition": { "type": "float", - "value": 0.01000165939331055 + "value": 0.010001659393310547 } }, { @@ -3408,7 +3408,7 @@ }, "XOrientation": { "type": "float", - "value": -0.8819230198860169 + "value": -0.8819230198860168 }, "XPosition": { "type": "float", @@ -3416,11 +3416,11 @@ }, "YOrientation": { "type": "float", - "value": -0.471393495798111 + "value": -0.47139349579811096 }, "YPosition": { "type": "float", - "value": 27.63581848144531 + "value": 27.635818481445312 }, "ZPosition": { "type": "float", @@ -3518,7 +3518,7 @@ }, "XPosition": { "type": "float", - "value": 19.08249092102051 + "value": 19.082490921020508 }, "YOrientation": { "type": "float", @@ -3530,7 +3530,7 @@ }, "ZPosition": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -3627,7 +3627,7 @@ }, "XPosition": { "type": "float", - "value": 18.41335868835449 + "value": 18.413358688354492 }, "YOrientation": { "type": "float", @@ -3635,11 +3635,11 @@ }, "YPosition": { "type": "float", - "value": 18.87575149536133 + "value": 18.875751495361328 }, "ZPosition": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } } ] @@ -3663,7 +3663,7 @@ }, "Bearing": { "type": "float", - "value": -1.079922318458557 + "value": -1.0799223184585571 }, "BodyBag": { "type": "byte", @@ -3863,11 +3863,11 @@ }, "X": { "type": "float", - "value": 23.34506034851074 + "value": 23.345060348510742 }, "Y": { "type": "float", - "value": 35.44623184204102 + "value": 35.446231842041016 }, "Z": { "type": "float", @@ -4090,15 +4090,15 @@ }, "X": { "type": "float", - "value": 29.31055068969727 + "value": 29.310550689697266 }, "Y": { "type": "float", - "value": 36.77146148681641 + "value": 36.771461486816406 }, "Z": { "type": "float", - "value": 0.01000165939331055 + "value": 0.010001659393310547 } }, { @@ -4321,11 +4321,11 @@ }, "Y": { "type": "float", - "value": 34.00209808349609 + "value": 34.002098083496094 }, "Z": { "type": "float", - "value": 0.01000165939331055 + "value": 0.010001659393310547 } }, { @@ -4344,7 +4344,7 @@ }, "Bearing": { "type": "float", - "value": 2.650706768035889 + "value": 2.6507067680358887 }, "BodyBag": { "type": "byte", @@ -4546,7 +4546,7 @@ }, "X": { "type": "float", - "value": 19.61410522460938 + "value": 19.614105224609375 }, "Y": { "type": "float", @@ -4554,7 +4554,7 @@ }, "Z": { "type": "float", - "value": 0.01000165939331055 + "value": 0.010001659393310547 } }, { @@ -4573,7 +4573,7 @@ }, "Bearing": { "type": "float", - "value": -1.030834794044495 + "value": -1.0308347940444946 }, "BodyBag": { "type": "byte", @@ -4777,7 +4777,7 @@ }, "Y": { "type": "float", - "value": 38.25521850585938 + "value": 38.255218505859375 }, "Z": { "type": "float", @@ -5231,11 +5231,11 @@ }, "Y": { "type": "float", - "value": 11.04155540466309 + "value": 11.041555404663086 }, "Z": { "type": "float", - "value": 0.01000009663403034 + "value": 0.010000096634030342 } }, { @@ -6357,7 +6357,7 @@ }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -7523,11 +7523,11 @@ }, "Y": { "type": "float", - "value": 21.72570610046387 + "value": 21.725706100463867 }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -7746,15 +7746,15 @@ }, "X": { "type": "float", - "value": 58.13799667358398 + "value": 58.137996673583984 }, "Y": { "type": "float", - "value": 22.08920860290527 + "value": 22.089208602905273 }, "Z": { "type": "float", - "value": 0.01000165939331055 + "value": 0.010001659393310547 } }, { @@ -9796,15 +9796,15 @@ }, "X": { "type": "float", - "value": 59.39557266235352 + "value": 59.395572662353516 }, "Y": { "type": "float", - "value": 20.20112800598145 + "value": 20.201128005981445 }, "Z": { "type": "float", - "value": 1.490116119384766e-007 + "value": 0.00000014901161193847656 } }, { @@ -9823,7 +9823,7 @@ }, "Bearing": { "type": "float", - "value": -1.521707773208618 + "value": -1.5217077732086182 }, "BodyBag": { "type": "byte", @@ -10023,7 +10023,7 @@ }, "X": { "type": "float", - "value": 19.77281188964844 + "value": 19.772811889648438 }, "Y": { "type": "float", @@ -10031,7 +10031,7 @@ }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -10254,11 +10254,11 @@ }, "Y": { "type": "float", - "value": 22.20339965820313 + "value": 22.203399658203125 }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -10277,7 +10277,7 @@ }, "Bearing": { "type": "float", - "value": 1.42353367805481 + "value": 1.4235336780548096 }, "BodyBag": { "type": "byte", @@ -10483,11 +10483,11 @@ }, "Y": { "type": "float", - "value": 19.83596611022949 + "value": 19.835966110229492 }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -10864,15 +10864,15 @@ }, "X": { "type": "float", - "value": 22.45808029174805 + "value": 22.458080291748047 }, "Y": { "type": "float", - "value": 19.46467208862305 + "value": 19.464672088623047 }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -11101,7 +11101,7 @@ }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -11328,7 +11328,7 @@ }, "Z": { "type": "float", - "value": -4.76837158203125e-007 + "value": -0.000000476837158203125 } } ] @@ -11446,7 +11446,7 @@ }, "XPosition": { "type": "float", - "value": 22.88590621948242 + "value": 22.885906219482422 }, "YPosition": { "type": "float", @@ -11454,7 +11454,7 @@ }, "ZPosition": { "type": "float", - "value": 1.509999990463257 + "value": 1.5099999904632568 } }, { @@ -11567,7 +11567,7 @@ }, "XPosition": { "type": "float", - "value": 19.74371147155762 + "value": 19.743711471557617 }, "YPosition": { "type": "float", @@ -11575,7 +11575,7 @@ }, "ZPosition": { "type": "float", - "value": 1.49999988079071 + "value": 1.4999998807907104 } }, { @@ -11688,15 +11688,15 @@ }, "XPosition": { "type": "float", - "value": 58.29207611083984 + "value": 58.292076110839844 }, "YPosition": { "type": "float", - "value": 22.01107597351074 + "value": 22.011075973510742 }, "ZPosition": { "type": "float", - "value": 1.510000109672546 + "value": 1.5100001096725464 } }, { @@ -11749,7 +11749,7 @@ }, "PitchVariation": { "type": "float", - "value": 0.2000000029802322 + "value": 0.20000000298023224 }, "Positional": { "type": "byte", @@ -11813,11 +11813,11 @@ }, "YPosition": { "type": "float", - "value": 23.16534042358398 + "value": 23.165340423583984 }, "ZPosition": { "type": "float", - "value": 1.510001659393311 + "value": 1.5100016593933105 } }, { @@ -11930,15 +11930,15 @@ }, "XPosition": { "type": "float", - "value": 38.42855834960938 + "value": 38.428558349609375 }, "YPosition": { "type": "float", - "value": 40.09366607666016 + "value": 40.093666076660156 }, "ZPosition": { "type": "float", - "value": 1.509999990463257 + "value": 1.5099999904632568 } } ] @@ -11975,26 +11975,26 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -2.585494995117188 + "value": -2.5854949951171875 }, "PointY": { "type": "float", - "value": -0.2437362670898438 + "value": -0.24373626708984375 }, "PointZ": { "type": "float", - "value": 0.02255978621542454 + "value": 0.022559786215424538 } }, { "__struct_id": 3, "PointX": { "type": "float", - "value": -2.138557434082031 + "value": -2.1385574340820312 }, "PointY": { "type": "float", - "value": -10.20940399169922 + "value": -10.209403991699219 }, "PointZ": { "type": "float", @@ -12005,11 +12005,11 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": 0.2553787231445313 + "value": 0.25537872314453125 }, "PointY": { "type": "float", - "value": -10.60146522521973 + "value": -10.601465225219727 }, "PointZ": { "type": "float", @@ -12028,7 +12028,7 @@ }, "PointZ": { "type": "float", - "value": 0.02255978621542454 + "value": 0.022559786215424538 } } ] @@ -12141,7 +12141,7 @@ }, "YPosition": { "type": "float", - "value": 36.22249603271484 + "value": 36.222496032714844 }, "ZOrientation": { "type": "float", @@ -12196,7 +12196,7 @@ }, "PointY": { "type": "float", - "value": -3.995079040527344 + "value": -3.9950790405273438 }, "PointZ": { "type": "float", @@ -12399,7 +12399,7 @@ }, "PointY": { "type": "float", - "value": -3.995079040527344 + "value": -3.9950790405273438 }, "PointZ": { "type": "float", @@ -12583,7 +12583,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.253374099731445 + "value": -3.2533740997314453 }, "PointY": { "type": "float", @@ -12598,7 +12598,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.234580039978027 + "value": -3.2345800399780273 }, "PointY": { "type": "float", @@ -12606,7 +12606,7 @@ }, "PointZ": { "type": "float", - "value": 0.02500005997717381 + "value": 0.025000059977173805 } }, { @@ -12786,7 +12786,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.253374099731445 + "value": -3.2533740997314453 }, "PointY": { "type": "float", @@ -12801,7 +12801,7 @@ "__struct_id": 3, "PointX": { "type": "float", - "value": -3.234580039978027 + "value": -3.2345800399780273 }, "PointY": { "type": "float", @@ -12809,7 +12809,7 @@ }, "PointZ": { "type": "float", - "value": 0.02500005997717381 + "value": 0.025000059977173805 } }, { @@ -12945,7 +12945,7 @@ }, "XPosition": { "type": "float", - "value": 7.61699390411377 + "value": 7.6169939041137695 }, "YOrientation": { "type": "float", @@ -12953,7 +12953,7 @@ }, "YPosition": { "type": "float", - "value": 31.69231986999512 + "value": 31.692319869995117 }, "ZOrientation": { "type": "float", @@ -12961,7 +12961,7 @@ }, "ZPosition": { "type": "float", - "value": 9.5367431640625e-007 + "value": 0.00000095367431640625 } } ] @@ -13017,11 +13017,11 @@ }, "YOrientation": { "type": "float", - "value": 2.102055759678478e-006 + "value": 0.0000021020557596784784 }, "YPosition": { "type": "float", - "value": 20.28449630737305 + "value": 20.284496307373047 }, "ZPosition": { "type": "float", @@ -13087,7 +13087,7 @@ }, "ZPosition": { "type": "float", - "value": -5.7220458984375e-006 + "value": -0.0000057220458984375 } }, { @@ -13137,11 +13137,11 @@ }, "XPosition": { "type": "float", - "value": 2.060479640960693 + "value": 2.0604796409606934 }, "YOrientation": { "type": "float", - "value": 1.029172267408285e-006 + "value": 0.0000010291722674082848 }, "YPosition": { "type": "float", @@ -13149,7 +13149,7 @@ }, "ZPosition": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } } ] diff --git a/_module/git/thequietofthemin.git.json b/_module/git/thequietofthemin.git.json index e9f1948..ce2866a 100644 --- a/_module/git/thequietofthemin.git.json +++ b/_module/git/thequietofthemin.git.json @@ -278,11 +278,11 @@ }, "Y": { "type": "float", - "value": 52.21608734130859 + "value": 52.216087341308594 }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -498,7 +498,7 @@ }, "X": { "type": "float", - "value": 41.19637298583984 + "value": 41.196372985839844 }, "Y": { "type": "float", @@ -506,7 +506,7 @@ }, "Z": { "type": "float", - "value": 9.5367431640625e-006 + "value": 0.0000095367431640625 } }, { @@ -725,7 +725,7 @@ }, "Y": { "type": "float", - "value": 48.89194488525391 + "value": 48.891944885253906 }, "Z": { "type": "float", @@ -944,7 +944,7 @@ }, "X": { "type": "float", - "value": 43.33951568603516 + "value": 43.339515686035156 }, "Y": { "type": "float", @@ -1167,11 +1167,11 @@ }, "X": { "type": "float", - "value": 52.57250595092773 + "value": 52.572505950927734 }, "Y": { "type": "float", - "value": 13.78011512756348 + "value": 13.780115127563477 }, "Z": { "type": "float", @@ -1394,11 +1394,11 @@ }, "Y": { "type": "float", - "value": 5.94110918045044 + "value": 5.9411091804504395 }, "Z": { "type": "float", - "value": 0.009999930858612061 + "value": 0.00999993085861206 } }, { @@ -1617,11 +1617,11 @@ }, "Y": { "type": "float", - "value": 10.84413909912109 + "value": 10.844139099121094 }, "Z": { "type": "float", - "value": -1.192092895507813e-007 + "value": -0.00000011920928955078125 } }, { @@ -1836,7 +1836,7 @@ }, "X": { "type": "float", - "value": 52.99975967407227 + "value": 52.999759674072266 }, "Y": { "type": "float", @@ -1844,7 +1844,7 @@ }, "Z": { "type": "float", - "value": 2.384185791015625e-007 + "value": 0.0000002384185791015625 } }, { @@ -2063,7 +2063,7 @@ }, "Y": { "type": "float", - "value": 10.37340545654297 + "value": 10.373405456542969 }, "Z": { "type": "float", @@ -2290,7 +2290,7 @@ }, "Z": { "type": "float", - "value": 0.0100000100210309 + "value": 0.010000010021030903 } }, { @@ -2505,11 +2505,11 @@ }, "X": { "type": "float", - "value": 18.31732559204102 + "value": 18.317325592041016 }, "Y": { "type": "float", - "value": 1.762819051742554 + "value": 1.7628190517425537 }, "Z": { "type": "float", @@ -2728,11 +2728,11 @@ }, "X": { "type": "float", - "value": 23.21756553649902 + "value": 23.217565536499023 }, "Y": { "type": "float", - "value": 2.530272006988525 + "value": 2.5302720069885254 }, "Z": { "type": "float", @@ -2955,7 +2955,7 @@ }, "Y": { "type": "float", - "value": 19.3975944519043 + "value": 19.397594451904297 }, "Z": { "type": "float", @@ -3174,7 +3174,7 @@ }, "X": { "type": "float", - "value": 40.07021331787109 + "value": 40.070213317871094 }, "Y": { "type": "float", @@ -3182,7 +3182,7 @@ }, "Z": { "type": "float", - "value": -8.568167686462402e-008 + "value": -8.568167686462402e-8 } }, { @@ -3401,7 +3401,7 @@ }, "Y": { "type": "float", - "value": 29.61967849731445 + "value": 29.619678497314453 }, "Z": { "type": "float", @@ -3620,7 +3620,7 @@ }, "X": { "type": "float", - "value": 34.29781341552734 + "value": 34.297813415527344 }, "Y": { "type": "float", @@ -3851,7 +3851,7 @@ }, "Z": { "type": "float", - "value": 0.01000005286186934 + "value": 0.010000052861869335 } }, { @@ -4293,11 +4293,11 @@ }, "Y": { "type": "float", - "value": 31.98800086975098 + "value": 31.988000869750977 }, "Z": { "type": "float", - "value": 0.01000010967254639 + "value": 0.010000109672546387 } }, { @@ -4512,7 +4512,7 @@ }, "X": { "type": "float", - "value": 42.45475006103516 + "value": 42.454750061035156 }, "Y": { "type": "float", @@ -4539,7 +4539,7 @@ }, "Bearing": { "type": "float", - "value": 1.570795893669128 + "value": 1.5707958936691284 }, "BodyBag": { "type": "byte", @@ -4962,7 +4962,7 @@ }, "Y": { "type": "float", - "value": 19.42643356323242 + "value": 19.426433563232422 }, "Z": { "type": "float", @@ -5181,11 +5181,11 @@ }, "X": { "type": "float", - "value": 18.11355590820313 + "value": 18.113555908203125 }, "Y": { "type": "float", - "value": 21.91219520568848 + "value": 21.912195205688477 }, "Z": { "type": "float", @@ -5408,7 +5408,7 @@ }, "Y": { "type": "float", - "value": 21.08381080627441 + "value": 21.083810806274414 }, "Z": { "type": "float", @@ -5631,7 +5631,7 @@ }, "Y": { "type": "float", - "value": 16.62683486938477 + "value": 16.626834869384766 }, "Z": { "type": "float", @@ -5854,11 +5854,11 @@ }, "Y": { "type": "float", - "value": 18.73380661010742 + "value": 18.733806610107422 }, "Z": { "type": "float", - "value": 5.960464477539063e-008 + "value": 5.960464477539063e-8 } }, { @@ -6077,7 +6077,7 @@ }, "Y": { "type": "float", - "value": 17.61887168884277 + "value": 17.618871688842773 }, "Z": { "type": "float", @@ -6300,11 +6300,11 @@ }, "Y": { "type": "float", - "value": 20.75842666625977 + "value": 20.758426666259766 }, "Z": { "type": "float", - "value": -1.192092895507813e-007 + "value": -0.00000011920928955078125 } }, { @@ -6527,7 +6527,7 @@ }, "Z": { "type": "float", - "value": 1.490116119384766e-008 + "value": 1.4901161193847656e-8 } }, { @@ -6973,7 +6973,7 @@ }, "Z": { "type": "float", - "value": 1.127251029014587 + "value": 1.1272510290145874 } }, { @@ -7411,7 +7411,7 @@ }, "X": { "type": "float", - "value": 43.41528701782227 + "value": 43.415287017822266 }, "Y": { "type": "float", @@ -7419,7 +7419,7 @@ }, "Z": { "type": "float", - "value": -1.192092895507813e-007 + "value": -0.00000011920928955078125 } }, { diff --git a/_module/ifo/module.ifo.json b/_module/ifo/module.ifo.json index bf21722..2081b73 100644 --- a/_module/ifo/module.ifo.json +++ b/_module/ifo/module.ifo.json @@ -203,7 +203,7 @@ }, "Mod_Entry_Dir_Y": { "type": "float", - "value": -4.371138828673793e-008 + "value": -4.371138828673793e-8 }, "Mod_Entry_X": { "type": "float", @@ -383,7 +383,7 @@ }, "Mod_OnPlrGuiEvt": { "type": "resref", - "value": "" + "value": "prc_onplayergui" }, "Mod_OnPlrLvlUp": { "type": "resref", diff --git a/_module/itp/creaturepalcus.itp.json b/_module/itp/creaturepalcus.itp.json index 9b107bb..4a5f09f 100644 --- a/_module/itp/creaturepalcus.itp.json +++ b/_module/itp/creaturepalcus.itp.json @@ -4652,7 +4652,7 @@ "__struct_id": 0, "CR": { "type": "float", - "value": 17.0 + "value": 16.0 }, "FACTION": { "type": "cexostring", @@ -8552,7 +8552,7 @@ "__struct_id": 0, "CR": { "type": "float", - "value": 0.3333333432674408 + "value": 84.0 }, "FACTION": { "type": "cexostring", diff --git a/_module/ncs/0c_assoc_actions.ncs b/_module/ncs/0c_assoc_actions.ncs index cdbaad0..81b509d 100644 Binary files a/_module/ncs/0c_assoc_actions.ncs and b/_module/ncs/0c_assoc_actions.ncs differ diff --git a/_module/ncs/0c_cast_polymorp.ncs b/_module/ncs/0c_cast_polymorp.ncs index 9f1916e..3e63738 100644 Binary files a/_module/ncs/0c_cast_polymorp.ncs and b/_module/ncs/0c_cast_polymorp.ncs differ diff --git a/_module/ncs/0c_fire_henchmen.ncs b/_module/ncs/0c_fire_henchmen.ncs index 64c87e4..5ede92b 100644 Binary files a/_module/ncs/0c_fire_henchmen.ncs and b/_module/ncs/0c_fire_henchmen.ncs differ diff --git a/_module/ncs/0c_get_convo.ncs b/_module/ncs/0c_get_convo.ncs index 718e80f..d1c3d77 100644 Binary files a/_module/ncs/0c_get_convo.ncs and b/_module/ncs/0c_get_convo.ncs differ diff --git a/_module/ncs/0c_get_henchman.ncs b/_module/ncs/0c_get_henchman.ncs index 40709b7..0b8d5e9 100644 Binary files a/_module/ncs/0c_get_henchman.ncs and b/_module/ncs/0c_get_henchman.ncs differ diff --git a/_module/ncs/0c_henchmenspell.ncs b/_module/ncs/0c_henchmenspell.ncs index cd33d49..d15b5a5 100644 Binary files a/_module/ncs/0c_henchmenspell.ncs and b/_module/ncs/0c_henchmenspell.ncs differ diff --git a/_module/ncs/0c_if_a_magic_m.ncs b/_module/ncs/0c_if_a_magic_m.ncs index c6db42b..4867b25 100644 Binary files a/_module/ncs/0c_if_a_magic_m.ncs and b/_module/ncs/0c_if_a_magic_m.ncs differ diff --git a/_module/ncs/0c_if_ass_convo.ncs b/_module/ncs/0c_if_ass_convo.ncs index 80221db..2c3d67d 100644 Binary files a/_module/ncs/0c_if_ass_convo.ncs and b/_module/ncs/0c_if_ass_convo.ncs differ diff --git a/_module/ncs/0c_if_assoc_mode.ncs b/_module/ncs/0c_if_assoc_mode.ncs index 3a539b8..07de2d4 100644 Binary files a/_module/ncs/0c_if_assoc_mode.ncs and b/_module/ncs/0c_if_assoc_mode.ncs differ diff --git a/_module/ncs/0c_if_cntrspell.ncs b/_module/ncs/0c_if_cntrspell.ncs index 0a48907..d6afe1e 100644 Binary files a/_module/ncs/0c_if_cntrspell.ncs and b/_module/ncs/0c_if_cntrspell.ncs differ diff --git a/_module/ncs/0c_if_com_script.ncs b/_module/ncs/0c_if_com_script.ncs index 1772a7e..ce151a0 100644 Binary files a/_module/ncs/0c_if_com_script.ncs and b/_module/ncs/0c_if_com_script.ncs differ diff --git a/_module/ncs/0c_if_convo.ncs b/_module/ncs/0c_if_convo.ncs index 13b85f0..ef685bc 100644 Binary files a/_module/ncs/0c_if_convo.ncs and b/_module/ncs/0c_if_convo.ncs differ diff --git a/_module/ncs/0c_if_has_assoc.ncs b/_module/ncs/0c_if_has_assoc.ncs index ffdfb4f..cfe9eae 100644 Binary files a/_module/ncs/0c_if_has_assoc.ncs and b/_module/ncs/0c_if_has_assoc.ncs differ diff --git a/_module/ncs/0c_if_has_class.ncs b/_module/ncs/0c_if_has_class.ncs index 1461b03..ba91574 100644 Binary files a/_module/ncs/0c_if_has_class.ncs and b/_module/ncs/0c_if_has_class.ncs differ diff --git a/_module/ncs/0c_if_has_feat.ncs b/_module/ncs/0c_if_has_feat.ncs index 1db2eec..36c7493 100644 Binary files a/_module/ncs/0c_if_has_feat.ncs and b/_module/ncs/0c_if_has_feat.ncs differ diff --git a/_module/ncs/0c_if_has_spell.ncs b/_module/ncs/0c_if_has_spell.ncs index aa89e0e..7fc3923 100644 Binary files a/_module/ncs/0c_if_has_spell.ncs and b/_module/ncs/0c_if_has_spell.ncs differ diff --git a/_module/ncs/0c_if_hen_leave.ncs b/_module/ncs/0c_if_hen_leave.ncs index 58b270f..8f43309 100644 Binary files a/_module/ncs/0c_if_hen_leave.ncs and b/_module/ncs/0c_if_hen_leave.ncs differ diff --git a/_module/ncs/0c_if_hen_target.ncs b/_module/ncs/0c_if_hen_target.ncs new file mode 100644 index 0000000..27217da Binary files /dev/null and b/_module/ncs/0c_if_hen_target.ncs differ diff --git a/_module/ncs/0c_if_identify.ncs b/_module/ncs/0c_if_identify.ncs index f1e13f6..2e981b2 100644 Binary files a/_module/ncs/0c_if_identify.ncs and b/_module/ncs/0c_if_identify.ncs differ diff --git a/_module/ncs/0c_if_not_master.ncs b/_module/ncs/0c_if_not_master.ncs index 4af03a6..8a27ada 100644 Binary files a/_module/ncs/0c_if_not_master.ncs and b/_module/ncs/0c_if_not_master.ncs differ diff --git a/_module/ncs/0c_if_open_inven.ncs b/_module/ncs/0c_if_open_inven.ncs index 89a2fb5..bea33e4 100644 Binary files a/_module/ncs/0c_if_open_inven.ncs and b/_module/ncs/0c_if_open_inven.ncs differ diff --git a/_module/ncs/0c_if_pickuploot.ncs b/_module/ncs/0c_if_pickuploot.ncs index b726598..ff65ddd 100644 Binary files a/_module/ncs/0c_if_pickuploot.ncs and b/_module/ncs/0c_if_pickuploot.ncs differ diff --git a/_module/ncs/0c_if_polymorph.ncs b/_module/ncs/0c_if_polymorph.ncs index 2abec1d..b5d66cb 100644 Binary files a/_module/ncs/0c_if_polymorph.ncs and b/_module/ncs/0c_if_polymorph.ncs differ diff --git a/_module/ncs/0c_if_scout.ncs b/_module/ncs/0c_if_scout.ncs index b726598..3ef2e7d 100644 Binary files a/_module/ncs/0c_if_scout.ncs and b/_module/ncs/0c_if_scout.ncs differ diff --git a/_module/ncs/0c_if_taunt.ncs b/_module/ncs/0c_if_taunt.ncs index 9222ff7..7a8ae4c 100644 Binary files a/_module/ncs/0c_if_taunt.ncs and b/_module/ncs/0c_if_taunt.ncs differ diff --git a/_module/ncs/0c_listhenchman.ncs b/_module/ncs/0c_listhenchman.ncs index de1e30e..6af6af8 100644 Binary files a/_module/ncs/0c_listhenchman.ncs and b/_module/ncs/0c_listhenchman.ncs differ diff --git a/_module/ncs/0c_no_com_script.ncs b/_module/ncs/0c_no_com_script.ncs index e2a6ab1..217f3a3 100644 Binary files a/_module/ncs/0c_no_com_script.ncs and b/_module/ncs/0c_no_com_script.ncs differ diff --git a/_module/ncs/0c_summon_assoc.ncs b/_module/ncs/0c_summon_assoc.ncs index 8072f01..dfb5c9d 100644 Binary files a/_module/ncs/0c_summon_assoc.ncs and b/_module/ncs/0c_summon_assoc.ncs differ diff --git a/_module/ncs/0c_use_feat.ncs b/_module/ncs/0c_use_feat.ncs index 5f0da84..20da4ab 100644 Binary files a/_module/ncs/0c_use_feat.ncs and b/_module/ncs/0c_use_feat.ncs differ diff --git a/_module/ncs/0e_animations.ncs b/_module/ncs/0e_animations.ncs new file mode 100644 index 0000000..82a6259 Binary files /dev/null and b/_module/ncs/0e_animations.ncs differ diff --git a/_module/ncs/0e_c2_1_hb.ncs b/_module/ncs/0e_c2_1_hb.ncs index 2e0448d..05768dd 100644 Binary files a/_module/ncs/0e_c2_1_hb.ncs and b/_module/ncs/0e_c2_1_hb.ncs differ diff --git a/_module/ncs/0e_c2_7_ondeath.ncs b/_module/ncs/0e_c2_7_ondeath.ncs index c5ae737..2a53a4c 100644 Binary files a/_module/ncs/0e_c2_7_ondeath.ncs and b/_module/ncs/0e_c2_7_ondeath.ncs differ diff --git a/_module/ncs/0e_ch_1_hb.ncs b/_module/ncs/0e_ch_1_hb.ncs index dbe91f3..910e7ac 100644 Binary files a/_module/ncs/0e_ch_1_hb.ncs and b/_module/ncs/0e_ch_1_hb.ncs differ diff --git a/_module/ncs/0e_ch_7_ondeath.ncs b/_module/ncs/0e_ch_7_ondeath.ncs index 47f35bc..e05e802 100644 Binary files a/_module/ncs/0e_ch_7_ondeath.ncs and b/_module/ncs/0e_ch_7_ondeath.ncs differ diff --git a/_module/ncs/0e_do_combat_rnd.ncs b/_module/ncs/0e_do_combat_rnd.ncs index 0f93676..6ff5d0d 100644 Binary files a/_module/ncs/0e_do_combat_rnd.ncs and b/_module/ncs/0e_do_combat_rnd.ncs differ diff --git a/_module/ncs/0e_gui_events.ncs b/_module/ncs/0e_gui_events.ncs index 91bda4d..7a07799 100644 Binary files a/_module/ncs/0e_gui_events.ncs and b/_module/ncs/0e_gui_events.ncs differ diff --git a/_module/ncs/0e_id_events.ncs b/_module/ncs/0e_id_events.ncs index 259080c..2bd90cf 100644 Binary files a/_module/ncs/0e_id_events.ncs and b/_module/ncs/0e_id_events.ncs differ diff --git a/_module/ncs/0e_m1_3_endround.ncs b/_module/ncs/0e_m1_3_endround.ncs index 5154fd0..7ff3704 100644 Binary files a/_module/ncs/0e_m1_3_endround.ncs and b/_module/ncs/0e_m1_3_endround.ncs differ diff --git a/_module/ncs/0e_nui.ncs b/_module/ncs/0e_nui.ncs index e70f753..efebaf4 100644 Binary files a/_module/ncs/0e_nui.ncs and b/_module/ncs/0e_nui.ncs differ diff --git a/_module/ncs/0e_nui_dm.ncs b/_module/ncs/0e_nui_dm.ncs index 479c155..5b60693 100644 Binary files a/_module/ncs/0e_nui_dm.ncs and b/_module/ncs/0e_nui_dm.ncs differ diff --git a/_module/ncs/0e_onclientload.ncs b/_module/ncs/0e_onclientload.ncs index fc0ff67..512c069 100644 Binary files a/_module/ncs/0e_onclientload.ncs and b/_module/ncs/0e_onclientload.ncs differ diff --git a/_module/ncs/0e_player_target.ncs b/_module/ncs/0e_player_target.ncs index 2864f9a..e1b94a5 100644 Binary files a/_module/ncs/0e_player_target.ncs and b/_module/ncs/0e_player_target.ncs differ diff --git a/_module/ncs/0e_prc_ch_events.ncs b/_module/ncs/0e_prc_ch_events.ncs index 7aa1cca..ba8cca5 100644 Binary files a/_module/ncs/0e_prc_ch_events.ncs and b/_module/ncs/0e_prc_ch_events.ncs differ diff --git a/_module/ncs/0e_prc_id_events.ncs b/_module/ncs/0e_prc_id_events.ncs new file mode 100644 index 0000000..a34961f Binary files /dev/null and b/_module/ncs/0e_prc_id_events.ncs differ diff --git a/_module/ncs/2xmtreasure.ncs b/_module/ncs/2xmtreasure.ncs index 3311c94..e061be7 100644 Binary files a/_module/ncs/2xmtreasure.ncs and b/_module/ncs/2xmtreasure.ncs differ diff --git a/_module/ncs/2xtreasure.ncs b/_module/ncs/2xtreasure.ncs index 92d06d5..78f2239 100644 Binary files a/_module/ncs/2xtreasure.ncs and b/_module/ncs/2xtreasure.ncs differ diff --git a/_module/ncs/3xtreasure.ncs b/_module/ncs/3xtreasure.ncs index 89b2da2..f706611 100644 Binary files a/_module/ncs/3xtreasure.ncs and b/_module/ncs/3xtreasure.ncs differ diff --git a/_module/ncs/ai_a_ambusher.ncs b/_module/ncs/ai_a_ambusher.ncs index 25d510a..86641c4 100644 Binary files a/_module/ncs/ai_a_ambusher.ncs and b/_module/ncs/ai_a_ambusher.ncs differ diff --git a/_module/ncs/ai_a_atk_casters.ncs b/_module/ncs/ai_a_atk_casters.ncs index c2a3954..a5d0b24 100644 Binary files a/_module/ncs/ai_a_atk_casters.ncs and b/_module/ncs/ai_a_atk_casters.ncs differ diff --git a/_module/ncs/ai_a_atk_nearest.ncs b/_module/ncs/ai_a_atk_nearest.ncs index 4ab9cf5..a08b18d 100644 Binary files a/_module/ncs/ai_a_atk_nearest.ncs and b/_module/ncs/ai_a_atk_nearest.ncs differ diff --git a/_module/ncs/ai_a_atk_warrior.ncs b/_module/ncs/ai_a_atk_warrior.ncs index 28aeda3..2fb6a18 100644 Binary files a/_module/ncs/ai_a_atk_warrior.ncs and b/_module/ncs/ai_a_atk_warrior.ncs differ diff --git a/_module/ncs/ai_a_barbarian.ncs b/_module/ncs/ai_a_barbarian.ncs index fcad436..96a25c4 100644 Binary files a/_module/ncs/ai_a_barbarian.ncs and b/_module/ncs/ai_a_barbarian.ncs differ diff --git a/_module/ncs/ai_a_bard.ncs b/_module/ncs/ai_a_bard.ncs index 1e0f286..5fbe936 100644 Binary files a/_module/ncs/ai_a_bard.ncs and b/_module/ncs/ai_a_bard.ncs differ diff --git a/_module/ncs/ai_a_cleric.ncs b/_module/ncs/ai_a_cleric.ncs index db0648c..1c74806 100644 Binary files a/_module/ncs/ai_a_cleric.ncs and b/_module/ncs/ai_a_cleric.ncs differ diff --git a/_module/ncs/ai_a_cntrspell.ncs b/_module/ncs/ai_a_cntrspell.ncs index b240c5b..8df9d7d 100644 Binary files a/_module/ncs/ai_a_cntrspell.ncs and b/_module/ncs/ai_a_cntrspell.ncs differ diff --git a/_module/ncs/ai_a_default.ncs b/_module/ncs/ai_a_default.ncs index 7122b9b..7ac3954 100644 Binary files a/_module/ncs/ai_a_default.ncs and b/_module/ncs/ai_a_default.ncs differ diff --git a/_module/ncs/ai_a_defensive.ncs b/_module/ncs/ai_a_defensive.ncs index 830a87e..d20bcda 100644 Binary files a/_module/ncs/ai_a_defensive.ncs and b/_module/ncs/ai_a_defensive.ncs differ diff --git a/_module/ncs/ai_a_druid.ncs b/_module/ncs/ai_a_druid.ncs index 6177c61..a83e8ab 100644 Binary files a/_module/ncs/ai_a_druid.ncs and b/_module/ncs/ai_a_druid.ncs differ diff --git a/_module/ncs/ai_a_fighter.ncs b/_module/ncs/ai_a_fighter.ncs index 69bdc0e..7954973 100644 Binary files a/_module/ncs/ai_a_fighter.ncs and b/_module/ncs/ai_a_fighter.ncs differ diff --git a/_module/ncs/ai_a_flanker.ncs b/_module/ncs/ai_a_flanker.ncs index f9b72bc..fd3effc 100644 Binary files a/_module/ncs/ai_a_flanker.ncs and b/_module/ncs/ai_a_flanker.ncs differ diff --git a/_module/ncs/ai_a_invisible.ncs b/_module/ncs/ai_a_invisible.ncs index e5dc6b1..91e1616 100644 Binary files a/_module/ncs/ai_a_invisible.ncs and b/_module/ncs/ai_a_invisible.ncs differ diff --git a/_module/ncs/ai_a_monk.ncs b/_module/ncs/ai_a_monk.ncs index 1da2e48..d5b3351 100644 Binary files a/_module/ncs/ai_a_monk.ncs and b/_module/ncs/ai_a_monk.ncs differ diff --git a/_module/ncs/ai_a_no_cmb_mode.ncs b/_module/ncs/ai_a_no_cmb_mode.ncs index 24c7a11..576c1ca 100644 Binary files a/_module/ncs/ai_a_no_cmb_mode.ncs and b/_module/ncs/ai_a_no_cmb_mode.ncs differ diff --git a/_module/ncs/ai_a_paladin.ncs b/_module/ncs/ai_a_paladin.ncs index 43ac202..8d5417d 100644 Binary files a/_module/ncs/ai_a_paladin.ncs and b/_module/ncs/ai_a_paladin.ncs differ diff --git a/_module/ncs/ai_a_peaceful.ncs b/_module/ncs/ai_a_peaceful.ncs index 4785a6f..acf016b 100644 Binary files a/_module/ncs/ai_a_peaceful.ncs and b/_module/ncs/ai_a_peaceful.ncs differ diff --git a/_module/ncs/ai_a_polymorphed.ncs b/_module/ncs/ai_a_polymorphed.ncs index 8d21990..27b2eef 100644 Binary files a/_module/ncs/ai_a_polymorphed.ncs and b/_module/ncs/ai_a_polymorphed.ncs differ diff --git a/_module/ncs/ai_a_ranged.ncs b/_module/ncs/ai_a_ranged.ncs index c741b2f..df772f5 100644 Binary files a/_module/ncs/ai_a_ranged.ncs and b/_module/ncs/ai_a_ranged.ncs differ diff --git a/_module/ncs/ai_a_ranger.ncs b/_module/ncs/ai_a_ranger.ncs index 3f7efde..92a4663 100644 Binary files a/_module/ncs/ai_a_ranger.ncs and b/_module/ncs/ai_a_ranger.ncs differ diff --git a/_module/ncs/ai_a_rogue.ncs b/_module/ncs/ai_a_rogue.ncs index 7e26195..46a13a7 100644 Binary files a/_module/ncs/ai_a_rogue.ncs and b/_module/ncs/ai_a_rogue.ncs differ diff --git a/_module/ncs/ai_a_sorcerer.ncs b/_module/ncs/ai_a_sorcerer.ncs index 91e107c..276c287 100644 Binary files a/_module/ncs/ai_a_sorcerer.ncs and b/_module/ncs/ai_a_sorcerer.ncs differ diff --git a/_module/ncs/ai_a_taunter.ncs b/_module/ncs/ai_a_taunter.ncs index bb03e53..d188516 100644 Binary files a/_module/ncs/ai_a_taunter.ncs and b/_module/ncs/ai_a_taunter.ncs differ diff --git a/_module/ncs/ai_a_wizard.ncs b/_module/ncs/ai_a_wizard.ncs index cbd5264..b21f745 100644 Binary files a/_module/ncs/ai_a_wizard.ncs and b/_module/ncs/ai_a_wizard.ncs differ diff --git a/_module/ncs/ai_ambusher.ncs b/_module/ncs/ai_ambusher.ncs index d1f1f8d..e4a4d0c 100644 Binary files a/_module/ncs/ai_ambusher.ncs and b/_module/ncs/ai_ambusher.ncs differ diff --git a/_module/ncs/ai_barbarian.ncs b/_module/ncs/ai_barbarian.ncs index 982e8d6..ec57d98 100644 Binary files a/_module/ncs/ai_barbarian.ncs and b/_module/ncs/ai_barbarian.ncs differ diff --git a/_module/ncs/ai_bard.ncs b/_module/ncs/ai_bard.ncs index 384fe44..5564ba0 100644 Binary files a/_module/ncs/ai_bard.ncs and b/_module/ncs/ai_bard.ncs differ diff --git a/_module/ncs/ai_bloodmane.ncs b/_module/ncs/ai_bloodmane.ncs new file mode 100644 index 0000000..3cbdc68 Binary files /dev/null and b/_module/ncs/ai_bloodmane.ncs differ diff --git a/_module/ncs/ai_cleric.ncs b/_module/ncs/ai_cleric.ncs index c8f039a..ce4b0ee 100644 Binary files a/_module/ncs/ai_cleric.ncs and b/_module/ncs/ai_cleric.ncs differ diff --git a/_module/ncs/ai_cntrspell.ncs b/_module/ncs/ai_cntrspell.ncs index b675c9e..6bda2ec 100644 Binary files a/_module/ncs/ai_cntrspell.ncs and b/_module/ncs/ai_cntrspell.ncs differ diff --git a/_module/ncs/ai_coward.ncs b/_module/ncs/ai_coward.ncs index 10e571e..11c124e 100644 Binary files a/_module/ncs/ai_coward.ncs and b/_module/ncs/ai_coward.ncs differ diff --git a/_module/ncs/ai_default.ncs b/_module/ncs/ai_default.ncs index 8897334..0d3ee42 100644 Binary files a/_module/ncs/ai_default.ncs and b/_module/ncs/ai_default.ncs differ diff --git a/_module/ncs/ai_defensive.ncs b/_module/ncs/ai_defensive.ncs index c61ef29..814c727 100644 Binary files a/_module/ncs/ai_defensive.ncs and b/_module/ncs/ai_defensive.ncs differ diff --git a/_module/ncs/ai_dragon.ncs b/_module/ncs/ai_dragon.ncs index 5d75ac1..9160ad0 100644 Binary files a/_module/ncs/ai_dragon.ncs and b/_module/ncs/ai_dragon.ncs differ diff --git a/_module/ncs/ai_dragon_boss.ncs b/_module/ncs/ai_dragon_boss.ncs new file mode 100644 index 0000000..7a6c294 Binary files /dev/null and b/_module/ncs/ai_dragon_boss.ncs differ diff --git a/_module/ncs/ai_druid.ncs b/_module/ncs/ai_druid.ncs index fdc1778..f23a800 100644 Binary files a/_module/ncs/ai_druid.ncs and b/_module/ncs/ai_druid.ncs differ diff --git a/_module/ncs/ai_fighter.ncs b/_module/ncs/ai_fighter.ncs index 36fb56c..c70f131 100644 Binary files a/_module/ncs/ai_fighter.ncs and b/_module/ncs/ai_fighter.ncs differ diff --git a/_module/ncs/ai_flanker.ncs b/_module/ncs/ai_flanker.ncs index cc43329..52df680 100644 Binary files a/_module/ncs/ai_flanker.ncs and b/_module/ncs/ai_flanker.ncs differ diff --git a/_module/ncs/ai_incorporeal.ncs b/_module/ncs/ai_incorporeal.ncs index ea7ce3b..1edff0b 100644 Binary files a/_module/ncs/ai_incorporeal.ncs and b/_module/ncs/ai_incorporeal.ncs differ diff --git a/_module/ncs/ai_invisible.ncs b/_module/ncs/ai_invisible.ncs index a0d4488..5a66c06 100644 Binary files a/_module/ncs/ai_invisible.ncs and b/_module/ncs/ai_invisible.ncs differ diff --git a/_module/ncs/ai_monk.ncs b/_module/ncs/ai_monk.ncs index f3b5142..3d10c25 100644 Binary files a/_module/ncs/ai_monk.ncs and b/_module/ncs/ai_monk.ncs differ diff --git a/_module/ncs/ai_paladin.ncs b/_module/ncs/ai_paladin.ncs index 1f982f5..b8550fa 100644 Binary files a/_module/ncs/ai_paladin.ncs and b/_module/ncs/ai_paladin.ncs differ diff --git a/_module/ncs/ai_polymorphed.ncs b/_module/ncs/ai_polymorphed.ncs index 2dcbf86..2efa3e1 100644 Binary files a/_module/ncs/ai_polymorphed.ncs and b/_module/ncs/ai_polymorphed.ncs differ diff --git a/_module/ncs/ai_ranged.ncs b/_module/ncs/ai_ranged.ncs index 9a62f27..553fa7e 100644 Binary files a/_module/ncs/ai_ranged.ncs and b/_module/ncs/ai_ranged.ncs differ diff --git a/_module/ncs/ai_ranger.ncs b/_module/ncs/ai_ranger.ncs index 6ee586a..e5f8d05 100644 Binary files a/_module/ncs/ai_ranger.ncs and b/_module/ncs/ai_ranger.ncs differ diff --git a/_module/ncs/ai_rogue.ncs b/_module/ncs/ai_rogue.ncs index c48ed23..ad0244e 100644 Binary files a/_module/ncs/ai_rogue.ncs and b/_module/ncs/ai_rogue.ncs differ diff --git a/_module/ncs/ai_shadow.ncs b/_module/ncs/ai_shadow.ncs index 66646c4..cbaa003 100644 Binary files a/_module/ncs/ai_shadow.ncs and b/_module/ncs/ai_shadow.ncs differ diff --git a/_module/ncs/ai_sorcerer.ncs b/_module/ncs/ai_sorcerer.ncs index b709618..8367265 100644 Binary files a/_module/ncs/ai_sorcerer.ncs and b/_module/ncs/ai_sorcerer.ncs differ diff --git a/_module/ncs/ai_taunter.ncs b/_module/ncs/ai_taunter.ncs index 5fd20c4..8c01537 100644 Binary files a/_module/ncs/ai_taunter.ncs and b/_module/ncs/ai_taunter.ncs differ diff --git a/_module/ncs/ai_wizard.ncs b/_module/ncs/ai_wizard.ncs index 22b7cf9..66e0041 100644 Binary files a/_module/ncs/ai_wizard.ncs and b/_module/ncs/ai_wizard.ncs differ diff --git a/_module/ncs/altartouch.ncs b/_module/ncs/altartouch.ncs index c21da69..45e9c21 100644 Binary files a/_module/ncs/altartouch.ncs and b/_module/ncs/altartouch.ncs differ diff --git a/_module/ncs/at_004.ncs b/_module/ncs/at_004.ncs index d00611e..54392c0 100644 Binary files a/_module/ncs/at_004.ncs and b/_module/ncs/at_004.ncs differ diff --git a/_module/ncs/at_give6000xp.ncs b/_module/ncs/at_give6000xp.ncs index 5adfc60..a043b34 100644 Binary files a/_module/ncs/at_give6000xp.ncs and b/_module/ncs/at_give6000xp.ncs differ diff --git a/_module/ncs/attackhouse1.ncs b/_module/ncs/attackhouse1.ncs index 90602b1..28cb69e 100644 Binary files a/_module/ncs/attackhouse1.ncs and b/_module/ncs/attackhouse1.ncs differ diff --git a/_module/ncs/attackhouse2.ncs b/_module/ncs/attackhouse2.ncs index f6ba498..384b844 100644 Binary files a/_module/ncs/attackhouse2.ncs and b/_module/ncs/attackhouse2.ncs differ diff --git a/_module/ncs/attackhouse3.ncs b/_module/ncs/attackhouse3.ncs index cd7dc49..3561f37 100644 Binary files a/_module/ncs/attackhouse3.ncs and b/_module/ncs/attackhouse3.ncs differ diff --git a/_module/ncs/attackhouse4.ncs b/_module/ncs/attackhouse4.ncs index 75aa8eb..47c35ad 100644 Binary files a/_module/ncs/attackhouse4.ncs and b/_module/ncs/attackhouse4.ncs differ diff --git a/_module/ncs/attackhouse5.ncs b/_module/ncs/attackhouse5.ncs index e94668f..a003f2d 100644 Binary files a/_module/ncs/attackhouse5.ncs and b/_module/ncs/attackhouse5.ncs differ diff --git a/_module/ncs/calc_hs_var.ncs b/_module/ncs/calc_hs_var.ncs index df43bc0..1cef95b 100644 Binary files a/_module/ncs/calc_hs_var.ncs and b/_module/ncs/calc_hs_var.ncs differ diff --git a/_module/ncs/combatroundend.ncs b/_module/ncs/combatroundend.ncs index 4c4b109..9fd062e 100644 Binary files a/_module/ncs/combatroundend.ncs and b/_module/ncs/combatroundend.ncs differ diff --git a/_module/ncs/finalloot.ncs b/_module/ncs/finalloot.ncs index 70db061..825cbe6 100644 Binary files a/_module/ncs/finalloot.ncs and b/_module/ncs/finalloot.ncs differ diff --git a/_module/ncs/gateannounce.ncs b/_module/ncs/gateannounce.ncs index 11296d4..5b4c9bc 100644 Binary files a/_module/ncs/gateannounce.ncs and b/_module/ncs/gateannounce.ncs differ diff --git a/_module/ncs/give400exp.ncs b/_module/ncs/give400exp.ncs index 511aa8e..d52eb54 100644 Binary files a/_module/ncs/give400exp.ncs and b/_module/ncs/give400exp.ncs differ diff --git a/_module/ncs/goblinattack.ncs b/_module/ncs/goblinattack.ncs index d00611e..54392c0 100644 Binary files a/_module/ncs/goblinattack.ncs and b/_module/ncs/goblinattack.ncs differ diff --git a/_module/ncs/goblinfarm.ncs b/_module/ncs/goblinfarm.ncs index 7dc2133..59bd3d1 100644 Binary files a/_module/ncs/goblinfarm.ncs and b/_module/ncs/goblinfarm.ncs differ diff --git a/_module/ncs/hbrove1.ncs b/_module/ncs/hbrove1.ncs index fec27c4..dee8a5d 100644 Binary files a/_module/ncs/hbrove1.ncs and b/_module/ncs/hbrove1.ncs differ diff --git a/_module/ncs/hbrove1attack.ncs b/_module/ncs/hbrove1attack.ncs index bb5e9dc..acf3d55 100644 Binary files a/_module/ncs/hbrove1attack.ncs and b/_module/ncs/hbrove1attack.ncs differ diff --git a/_module/ncs/hbrove2.ncs b/_module/ncs/hbrove2.ncs index 529961e..2db728d 100644 Binary files a/_module/ncs/hbrove2.ncs and b/_module/ncs/hbrove2.ncs differ diff --git a/_module/ncs/hbrove2attack.ncs b/_module/ncs/hbrove2attack.ncs index fcc5515..23cbbf0 100644 Binary files a/_module/ncs/hbrove2attack.ncs and b/_module/ncs/hbrove2attack.ncs differ diff --git a/_module/ncs/hiddenchest.ncs b/_module/ncs/hiddenchest.ncs index e7f22c2..8527149 100644 Binary files a/_module/ncs/hiddenchest.ncs and b/_module/ncs/hiddenchest.ncs differ diff --git a/_module/ncs/hiddenloot.ncs b/_module/ncs/hiddenloot.ncs index d84e3d1..08f5410 100644 Binary files a/_module/ncs/hiddenloot.ncs and b/_module/ncs/hiddenloot.ncs differ diff --git a/_module/ncs/ho_lvlup_pc.ncs b/_module/ncs/ho_lvlup_pc.ncs index 3da8ad6..2870525 100644 Binary files a/_module/ncs/ho_lvlup_pc.ncs and b/_module/ncs/ho_lvlup_pc.ncs differ diff --git a/_module/ncs/horde_onmodload.ncs b/_module/ncs/horde_onmodload.ncs index 91daf8f..1c07d01 100644 Binary files a/_module/ncs/horde_onmodload.ncs and b/_module/ncs/horde_onmodload.ncs differ diff --git a/_module/ncs/hpersuadecheck.ncs b/_module/ncs/hpersuadecheck.ncs index bc47bd8..97c2a3e 100644 Binary files a/_module/ncs/hpersuadecheck.ncs and b/_module/ncs/hpersuadecheck.ncs differ diff --git a/_module/ncs/intro.ncs b/_module/ncs/intro.ncs index 1676d93..bc2d1ac 100644 Binary files a/_module/ncs/intro.ncs and b/_module/ncs/intro.ncs differ diff --git a/_module/ncs/intro2.ncs b/_module/ncs/intro2.ncs index 26e5805..a38d1d7 100644 Binary files a/_module/ncs/intro2.ncs and b/_module/ncs/intro2.ncs differ diff --git a/_module/ncs/introstart.ncs b/_module/ncs/introstart.ncs index b6988ca..16b43cb 100644 Binary files a/_module/ncs/introstart.ncs and b/_module/ncs/introstart.ncs differ diff --git a/_module/ncs/letter_invent.ncs b/_module/ncs/letter_invent.ncs index 027f9bc..b828ea7 100644 Binary files a/_module/ncs/letter_invent.ncs and b/_module/ncs/letter_invent.ncs differ diff --git a/_module/ncs/lorecheck.ncs b/_module/ncs/lorecheck.ncs index 9803a1a..ccc9a30 100644 Binary files a/_module/ncs/lorecheck.ncs and b/_module/ncs/lorecheck.ncs differ diff --git a/_module/ncs/lorecheckfail.ncs b/_module/ncs/lorecheckfail.ncs index 0300c8f..04c39ae 100644 Binary files a/_module/ncs/lorecheckfail.ncs and b/_module/ncs/lorecheckfail.ncs differ diff --git a/_module/ncs/mm_prc_spells.ncs b/_module/ncs/mm_prc_spells.ncs index a2a65a5..c6791e5 100644 Binary files a/_module/ncs/mm_prc_spells.ncs and b/_module/ncs/mm_prc_spells.ncs differ diff --git a/_module/ncs/movetoop10.ncs b/_module/ncs/movetoop10.ncs index c88853c..6fec662 100644 Binary files a/_module/ncs/movetoop10.ncs and b/_module/ncs/movetoop10.ncs differ diff --git a/_module/ncs/movetoop6.ncs b/_module/ncs/movetoop6.ncs index a8252d8..de78210 100644 Binary files a/_module/ncs/movetoop6.ncs and b/_module/ncs/movetoop6.ncs differ diff --git a/_module/ncs/movetoop7.ncs b/_module/ncs/movetoop7.ncs index b24384c..61e9bd6 100644 Binary files a/_module/ncs/movetoop7.ncs and b/_module/ncs/movetoop7.ncs differ diff --git a/_module/ncs/movetoop8.ncs b/_module/ncs/movetoop8.ncs index 8334ac6..96b290d 100644 Binary files a/_module/ncs/movetoop8.ncs and b/_module/ncs/movetoop8.ncs differ diff --git a/_module/ncs/movetoop9.ncs b/_module/ncs/movetoop9.ncs index f414e92..5681bd1 100644 Binary files a/_module/ncs/movetoop9.ncs and b/_module/ncs/movetoop9.ncs differ diff --git a/_module/ncs/noblequestdone.ncs b/_module/ncs/noblequestdone.ncs index 1f21b7b..8a66537 100644 Binary files a/_module/ncs/noblequestdone.ncs and b/_module/ncs/noblequestdone.ncs differ diff --git a/_module/ncs/noblewomanquest.ncs b/_module/ncs/noblewomanquest.ncs index edb209e..74f6620 100644 Binary files a/_module/ncs/noblewomanquest.ncs and b/_module/ncs/noblewomanquest.ncs differ diff --git a/_module/ncs/nw_c2_bossdie.ncs b/_module/ncs/nw_c2_bossdie.ncs index a1996a4..2cd384a 100644 Binary files a/_module/ncs/nw_c2_bossdie.ncs and b/_module/ncs/nw_c2_bossdie.ncs differ diff --git a/_module/ncs/nw_c2_bossspawn.ncs b/_module/ncs/nw_c2_bossspawn.ncs index 7001e45..0c67cde 100644 Binary files a/_module/ncs/nw_c2_bossspawn.ncs and b/_module/ncs/nw_c2_bossspawn.ncs differ diff --git a/_module/ncs/nw_c2_default1.ncs b/_module/ncs/nw_c2_default1.ncs index 3cd4c74..b6db1e8 100644 Binary files a/_module/ncs/nw_c2_default1.ncs and b/_module/ncs/nw_c2_default1.ncs differ diff --git a/_module/ncs/nw_c2_default2.ncs b/_module/ncs/nw_c2_default2.ncs index 5ad704e..04b4be7 100644 Binary files a/_module/ncs/nw_c2_default2.ncs and b/_module/ncs/nw_c2_default2.ncs differ diff --git a/_module/ncs/nw_c2_default3.ncs b/_module/ncs/nw_c2_default3.ncs index e559975..0bf7d39 100644 Binary files a/_module/ncs/nw_c2_default3.ncs and b/_module/ncs/nw_c2_default3.ncs differ diff --git a/_module/ncs/nw_c2_default4.ncs b/_module/ncs/nw_c2_default4.ncs index 14626cc..dff3c56 100644 Binary files a/_module/ncs/nw_c2_default4.ncs and b/_module/ncs/nw_c2_default4.ncs differ diff --git a/_module/ncs/nw_c2_default5.ncs b/_module/ncs/nw_c2_default5.ncs index 9d52b2d..756dfe8 100644 Binary files a/_module/ncs/nw_c2_default5.ncs and b/_module/ncs/nw_c2_default5.ncs differ diff --git a/_module/ncs/nw_c2_default6.ncs b/_module/ncs/nw_c2_default6.ncs index 6ec1b10..29d0f03 100644 Binary files a/_module/ncs/nw_c2_default6.ncs and b/_module/ncs/nw_c2_default6.ncs differ diff --git a/_module/ncs/nw_c2_default8.ncs b/_module/ncs/nw_c2_default8.ncs index 8036133..4b4975d 100644 Binary files a/_module/ncs/nw_c2_default8.ncs and b/_module/ncs/nw_c2_default8.ncs differ diff --git a/_module/ncs/nw_c2_defaultb.ncs b/_module/ncs/nw_c2_defaultb.ncs index 4ac42af..de2ce37 100644 Binary files a/_module/ncs/nw_c2_defaultb.ncs and b/_module/ncs/nw_c2_defaultb.ncs differ diff --git a/_module/ncs/nw_c2_defaulte.ncs b/_module/ncs/nw_c2_defaulte.ncs index 953e07b..1078e70 100644 Binary files a/_module/ncs/nw_c2_defaulte.ncs and b/_module/ncs/nw_c2_defaulte.ncs differ diff --git a/_module/ncs/nw_ch_ac1.ncs b/_module/ncs/nw_ch_ac1.ncs index 3534133..0fed426 100644 Binary files a/_module/ncs/nw_ch_ac1.ncs and b/_module/ncs/nw_ch_ac1.ncs differ diff --git a/_module/ncs/nw_ch_ac2.ncs b/_module/ncs/nw_ch_ac2.ncs index 2929d1c..7804256 100644 Binary files a/_module/ncs/nw_ch_ac2.ncs and b/_module/ncs/nw_ch_ac2.ncs differ diff --git a/_module/ncs/nw_ch_ac3.ncs b/_module/ncs/nw_ch_ac3.ncs index 4392b31..505123a 100644 Binary files a/_module/ncs/nw_ch_ac3.ncs and b/_module/ncs/nw_ch_ac3.ncs differ diff --git a/_module/ncs/nw_ch_ac4.ncs b/_module/ncs/nw_ch_ac4.ncs index e6248b0..7ad4d92 100644 Binary files a/_module/ncs/nw_ch_ac4.ncs and b/_module/ncs/nw_ch_ac4.ncs differ diff --git a/_module/ncs/nw_ch_ac5.ncs b/_module/ncs/nw_ch_ac5.ncs index 35de089..84bde86 100644 Binary files a/_module/ncs/nw_ch_ac5.ncs and b/_module/ncs/nw_ch_ac5.ncs differ diff --git a/_module/ncs/nw_ch_ac6.ncs b/_module/ncs/nw_ch_ac6.ncs index aedf00e..0b242be 100644 Binary files a/_module/ncs/nw_ch_ac6.ncs and b/_module/ncs/nw_ch_ac6.ncs differ diff --git a/_module/ncs/nw_ch_ac8.ncs b/_module/ncs/nw_ch_ac8.ncs index 44db5e5..e0d98c1 100644 Binary files a/_module/ncs/nw_ch_ac8.ncs and b/_module/ncs/nw_ch_ac8.ncs differ diff --git a/_module/ncs/nw_ch_aca.ncs b/_module/ncs/nw_ch_aca.ncs index 7dc0caf..2d53649 100644 Binary files a/_module/ncs/nw_ch_aca.ncs and b/_module/ncs/nw_ch_aca.ncs differ diff --git a/_module/ncs/nw_ch_acb.ncs b/_module/ncs/nw_ch_acb.ncs index 3d57e9b..d9235bc 100644 Binary files a/_module/ncs/nw_ch_acb.ncs and b/_module/ncs/nw_ch_acb.ncs differ diff --git a/_module/ncs/nw_ch_ace.ncs b/_module/ncs/nw_ch_ace.ncs index 29d75f3..31d065b 100644 Binary files a/_module/ncs/nw_ch_ace.ncs and b/_module/ncs/nw_ch_ace.ncs differ diff --git a/_module/ncs/nw_ch_summon_9.ncs b/_module/ncs/nw_ch_summon_9.ncs index 43fdf73..06bda0f 100644 Binary files a/_module/ncs/nw_ch_summon_9.ncs and b/_module/ncs/nw_ch_summon_9.ncs differ diff --git a/_module/ncs/nw_o2_boss.ncs b/_module/ncs/nw_o2_boss.ncs index 586fa99..a3d51d0 100644 Binary files a/_module/ncs/nw_o2_boss.ncs and b/_module/ncs/nw_o2_boss.ncs differ diff --git a/_module/ncs/nw_o2_classweap.ncs b/_module/ncs/nw_o2_classweap.ncs index 100d8c1..83378b7 100644 Binary files a/_module/ncs/nw_o2_classweap.ncs and b/_module/ncs/nw_o2_classweap.ncs differ diff --git a/_module/ncs/nw_o2_generalhig.ncs b/_module/ncs/nw_o2_generalhig.ncs index 5bbe734..5bf825c 100644 Binary files a/_module/ncs/nw_o2_generalhig.ncs and b/_module/ncs/nw_o2_generalhig.ncs differ diff --git a/_module/ncs/nw_o2_generallow.ncs b/_module/ncs/nw_o2_generallow.ncs index 72b50dc..cc4ab6d 100644 Binary files a/_module/ncs/nw_o2_generallow.ncs and b/_module/ncs/nw_o2_generallow.ncs differ diff --git a/_module/ncs/nw_o2_generalmed.ncs b/_module/ncs/nw_o2_generalmed.ncs index eb2b658..74c9f3e 100644 Binary files a/_module/ncs/nw_o2_generalmed.ncs and b/_module/ncs/nw_o2_generalmed.ncs differ diff --git a/_module/ncs/nw_s1_aurablnda.ncs b/_module/ncs/nw_s1_aurablnda.ncs index 8eb2136..fe1b1b8 100644 Binary files a/_module/ncs/nw_s1_aurablnda.ncs and b/_module/ncs/nw_s1_aurablnda.ncs differ diff --git a/_module/ncs/nw_s1_auracoldc.ncs b/_module/ncs/nw_s1_auracoldc.ncs index f3d57e6..3b34dc2 100644 Binary files a/_module/ncs/nw_s1_auracoldc.ncs and b/_module/ncs/nw_s1_auracoldc.ncs differ diff --git a/_module/ncs/nw_s1_auraelecc.ncs b/_module/ncs/nw_s1_auraelecc.ncs index 1a7eb25..c2303e1 100644 Binary files a/_module/ncs/nw_s1_auraelecc.ncs and b/_module/ncs/nw_s1_auraelecc.ncs differ diff --git a/_module/ncs/nw_s1_aurafirec.ncs b/_module/ncs/nw_s1_aurafirec.ncs index 56ab9ea..e34fc06 100644 Binary files a/_module/ncs/nw_s1_aurafirec.ncs and b/_module/ncs/nw_s1_aurafirec.ncs differ diff --git a/_module/ncs/nw_s1_auramenca.ncs b/_module/ncs/nw_s1_auramenca.ncs index ab48305..2b971d5 100644 Binary files a/_module/ncs/nw_s1_auramenca.ncs and b/_module/ncs/nw_s1_auramenca.ncs differ diff --git a/_module/ncs/nw_s1_aurastuna.ncs b/_module/ncs/nw_s1_aurastuna.ncs index c47d1c0..b9e62db 100644 Binary files a/_module/ncs/nw_s1_aurastuna.ncs and b/_module/ncs/nw_s1_aurastuna.ncs differ diff --git a/_module/ncs/nw_s1_auraunata.ncs b/_module/ncs/nw_s1_auraunata.ncs index ada3970..9ad3a14 100644 Binary files a/_module/ncs/nw_s1_auraunata.ncs and b/_module/ncs/nw_s1_auraunata.ncs differ diff --git a/_module/ncs/nw_s1_aurauneaa.ncs b/_module/ncs/nw_s1_aurauneaa.ncs index 3141e0d..2da4963 100644 Binary files a/_module/ncs/nw_s1_aurauneaa.ncs and b/_module/ncs/nw_s1_aurauneaa.ncs differ diff --git a/_module/ncs/nw_s1_bltacid.ncs b/_module/ncs/nw_s1_bltacid.ncs index 71cf5b0..bf821f9 100644 Binary files a/_module/ncs/nw_s1_bltacid.ncs and b/_module/ncs/nw_s1_bltacid.ncs differ diff --git a/_module/ncs/nw_s1_bltcharm.ncs b/_module/ncs/nw_s1_bltcharm.ncs index 07be62b..69201ef 100644 Binary files a/_module/ncs/nw_s1_bltcharm.ncs and b/_module/ncs/nw_s1_bltcharm.ncs differ diff --git a/_module/ncs/nw_s1_bltchrdr.ncs b/_module/ncs/nw_s1_bltchrdr.ncs index 75cc5f6..7f13817 100644 Binary files a/_module/ncs/nw_s1_bltchrdr.ncs and b/_module/ncs/nw_s1_bltchrdr.ncs differ diff --git a/_module/ncs/nw_s1_bltcold.ncs b/_module/ncs/nw_s1_bltcold.ncs index e353005..3cf220e 100644 Binary files a/_module/ncs/nw_s1_bltcold.ncs and b/_module/ncs/nw_s1_bltcold.ncs differ diff --git a/_module/ncs/nw_s1_bltcondr.ncs b/_module/ncs/nw_s1_bltcondr.ncs index c02d0a2..b80d45e 100644 Binary files a/_module/ncs/nw_s1_bltcondr.ncs and b/_module/ncs/nw_s1_bltcondr.ncs differ diff --git a/_module/ncs/nw_s1_bltconf.ncs b/_module/ncs/nw_s1_bltconf.ncs index e92ba81..5d738af 100644 Binary files a/_module/ncs/nw_s1_bltconf.ncs and b/_module/ncs/nw_s1_bltconf.ncs differ diff --git a/_module/ncs/nw_s1_bltdaze.ncs b/_module/ncs/nw_s1_bltdaze.ncs index 601a16f..41d01cf 100644 Binary files a/_module/ncs/nw_s1_bltdaze.ncs and b/_module/ncs/nw_s1_bltdaze.ncs differ diff --git a/_module/ncs/nw_s1_bltdeath.ncs b/_module/ncs/nw_s1_bltdeath.ncs index 29c535b..8b7521e 100644 Binary files a/_module/ncs/nw_s1_bltdeath.ncs and b/_module/ncs/nw_s1_bltdeath.ncs differ diff --git a/_module/ncs/nw_s1_bltdexdr.ncs b/_module/ncs/nw_s1_bltdexdr.ncs index 8022633..7ce2bff 100644 Binary files a/_module/ncs/nw_s1_bltdexdr.ncs and b/_module/ncs/nw_s1_bltdexdr.ncs differ diff --git a/_module/ncs/nw_s1_bltdisese.ncs b/_module/ncs/nw_s1_bltdisese.ncs index c4305e6..6474c3c 100644 Binary files a/_module/ncs/nw_s1_bltdisese.ncs and b/_module/ncs/nw_s1_bltdisese.ncs differ diff --git a/_module/ncs/nw_s1_bltdomn.ncs b/_module/ncs/nw_s1_bltdomn.ncs index d3fe494..aa2894c 100644 Binary files a/_module/ncs/nw_s1_bltdomn.ncs and b/_module/ncs/nw_s1_bltdomn.ncs differ diff --git a/_module/ncs/nw_s1_bltfire.ncs b/_module/ncs/nw_s1_bltfire.ncs index 112ce2f..b29d603 100644 Binary files a/_module/ncs/nw_s1_bltfire.ncs and b/_module/ncs/nw_s1_bltfire.ncs differ diff --git a/_module/ncs/nw_s1_bltintdr.ncs b/_module/ncs/nw_s1_bltintdr.ncs index e67d642..2e1a6bb 100644 Binary files a/_module/ncs/nw_s1_bltintdr.ncs and b/_module/ncs/nw_s1_bltintdr.ncs differ diff --git a/_module/ncs/nw_s1_bltknckd.ncs b/_module/ncs/nw_s1_bltknckd.ncs index 2d42de1..d2f7dd0 100644 Binary files a/_module/ncs/nw_s1_bltknckd.ncs and b/_module/ncs/nw_s1_bltknckd.ncs differ diff --git a/_module/ncs/nw_s1_bltlightn.ncs b/_module/ncs/nw_s1_bltlightn.ncs index 7eb3865..2d0f816 100644 Binary files a/_module/ncs/nw_s1_bltlightn.ncs and b/_module/ncs/nw_s1_bltlightn.ncs differ diff --git a/_module/ncs/nw_s1_bltlvldr.ncs b/_module/ncs/nw_s1_bltlvldr.ncs index f264014..50b42bb 100644 Binary files a/_module/ncs/nw_s1_bltlvldr.ncs and b/_module/ncs/nw_s1_bltlvldr.ncs differ diff --git a/_module/ncs/nw_s1_bltparal.ncs b/_module/ncs/nw_s1_bltparal.ncs index 91d35ec..8f186c5 100644 Binary files a/_module/ncs/nw_s1_bltparal.ncs and b/_module/ncs/nw_s1_bltparal.ncs differ diff --git a/_module/ncs/nw_s1_bltpoison.ncs b/_module/ncs/nw_s1_bltpoison.ncs index e61fba1..5f7fde9 100644 Binary files a/_module/ncs/nw_s1_bltpoison.ncs and b/_module/ncs/nw_s1_bltpoison.ncs differ diff --git a/_module/ncs/nw_s1_bltshards.ncs b/_module/ncs/nw_s1_bltshards.ncs index 66e1106..76311ec 100644 Binary files a/_module/ncs/nw_s1_bltshards.ncs and b/_module/ncs/nw_s1_bltshards.ncs differ diff --git a/_module/ncs/nw_s1_bltslow.ncs b/_module/ncs/nw_s1_bltslow.ncs index 07aae6b..4369808 100644 Binary files a/_module/ncs/nw_s1_bltslow.ncs and b/_module/ncs/nw_s1_bltslow.ncs differ diff --git a/_module/ncs/nw_s1_bltstrdr.ncs b/_module/ncs/nw_s1_bltstrdr.ncs index 3c45945..0b80df0 100644 Binary files a/_module/ncs/nw_s1_bltstrdr.ncs and b/_module/ncs/nw_s1_bltstrdr.ncs differ diff --git a/_module/ncs/nw_s1_bltstun.ncs b/_module/ncs/nw_s1_bltstun.ncs index f56a4d4..e34ed3b 100644 Binary files a/_module/ncs/nw_s1_bltstun.ncs and b/_module/ncs/nw_s1_bltstun.ncs differ diff --git a/_module/ncs/nw_s1_bltweb.ncs b/_module/ncs/nw_s1_bltweb.ncs index af9ae1d..7850552 100644 Binary files a/_module/ncs/nw_s1_bltweb.ncs and b/_module/ncs/nw_s1_bltweb.ncs differ diff --git a/_module/ncs/nw_s1_bltwisdr.ncs b/_module/ncs/nw_s1_bltwisdr.ncs index 6343d42..84b9183 100644 Binary files a/_module/ncs/nw_s1_bltwisdr.ncs and b/_module/ncs/nw_s1_bltwisdr.ncs differ diff --git a/_module/ncs/nw_s1_coneacid.ncs b/_module/ncs/nw_s1_coneacid.ncs index dbac089..06afc73 100644 Binary files a/_module/ncs/nw_s1_coneacid.ncs and b/_module/ncs/nw_s1_coneacid.ncs differ diff --git a/_module/ncs/nw_s1_conecold.ncs b/_module/ncs/nw_s1_conecold.ncs index 7bc6839..5d6921e 100644 Binary files a/_module/ncs/nw_s1_conecold.ncs and b/_module/ncs/nw_s1_conecold.ncs differ diff --git a/_module/ncs/nw_s1_conedisea.ncs b/_module/ncs/nw_s1_conedisea.ncs index 275681c..83ed013 100644 Binary files a/_module/ncs/nw_s1_conedisea.ncs and b/_module/ncs/nw_s1_conedisea.ncs differ diff --git a/_module/ncs/nw_s1_coneelec.ncs b/_module/ncs/nw_s1_coneelec.ncs index e6f88d6..cbe0d78 100644 Binary files a/_module/ncs/nw_s1_coneelec.ncs and b/_module/ncs/nw_s1_coneelec.ncs differ diff --git a/_module/ncs/nw_s1_conesonic.ncs b/_module/ncs/nw_s1_conesonic.ncs index 37fdb27..b17efc3 100644 Binary files a/_module/ncs/nw_s1_conesonic.ncs and b/_module/ncs/nw_s1_conesonic.ncs differ diff --git a/_module/ncs/nw_s1_dragfear.ncs b/_module/ncs/nw_s1_dragfear.ncs index 737c812..ed2566b 100644 Binary files a/_module/ncs/nw_s1_dragfear.ncs and b/_module/ncs/nw_s1_dragfear.ncs differ diff --git a/_module/ncs/nw_s1_dragfeara.ncs b/_module/ncs/nw_s1_dragfeara.ncs index 02f1182..95b845b 100644 Binary files a/_module/ncs/nw_s1_dragfeara.ncs and b/_module/ncs/nw_s1_dragfeara.ncs differ diff --git a/_module/ncs/nw_s1_feroc3.ncs b/_module/ncs/nw_s1_feroc3.ncs index 2be3528..ef2abee 100644 Binary files a/_module/ncs/nw_s1_feroc3.ncs and b/_module/ncs/nw_s1_feroc3.ncs differ diff --git a/_module/ncs/nw_s1_gazechaos.ncs b/_module/ncs/nw_s1_gazechaos.ncs index ac8153a..e11e1d1 100644 Binary files a/_module/ncs/nw_s1_gazechaos.ncs and b/_module/ncs/nw_s1_gazechaos.ncs differ diff --git a/_module/ncs/nw_s1_gazecharm.ncs b/_module/ncs/nw_s1_gazecharm.ncs index f4c1f8b..6857a05 100644 Binary files a/_module/ncs/nw_s1_gazecharm.ncs and b/_module/ncs/nw_s1_gazecharm.ncs differ diff --git a/_module/ncs/nw_s1_gazeconfu.ncs b/_module/ncs/nw_s1_gazeconfu.ncs index 0079267..7e648f9 100644 Binary files a/_module/ncs/nw_s1_gazeconfu.ncs and b/_module/ncs/nw_s1_gazeconfu.ncs differ diff --git a/_module/ncs/nw_s1_gazedaze.ncs b/_module/ncs/nw_s1_gazedaze.ncs index 12e9f71..8771bab 100644 Binary files a/_module/ncs/nw_s1_gazedaze.ncs and b/_module/ncs/nw_s1_gazedaze.ncs differ diff --git a/_module/ncs/nw_s1_gazedeath.ncs b/_module/ncs/nw_s1_gazedeath.ncs index 07fd108..6739976 100644 Binary files a/_module/ncs/nw_s1_gazedeath.ncs and b/_module/ncs/nw_s1_gazedeath.ncs differ diff --git a/_module/ncs/nw_s1_gazedomn.ncs b/_module/ncs/nw_s1_gazedomn.ncs index 006e39e..a6ebdd5 100644 Binary files a/_module/ncs/nw_s1_gazedomn.ncs and b/_module/ncs/nw_s1_gazedomn.ncs differ diff --git a/_module/ncs/nw_s1_gazedoom.ncs b/_module/ncs/nw_s1_gazedoom.ncs index 0c44c0e..8046d2c 100644 Binary files a/_module/ncs/nw_s1_gazedoom.ncs and b/_module/ncs/nw_s1_gazedoom.ncs differ diff --git a/_module/ncs/nw_s1_gazeevil.ncs b/_module/ncs/nw_s1_gazeevil.ncs index 1ca1826..bf584fa 100644 Binary files a/_module/ncs/nw_s1_gazeevil.ncs and b/_module/ncs/nw_s1_gazeevil.ncs differ diff --git a/_module/ncs/nw_s1_gazefear.ncs b/_module/ncs/nw_s1_gazefear.ncs index 626a403..1f65971 100644 Binary files a/_module/ncs/nw_s1_gazefear.ncs and b/_module/ncs/nw_s1_gazefear.ncs differ diff --git a/_module/ncs/nw_s1_gazegood.ncs b/_module/ncs/nw_s1_gazegood.ncs index a2b6985..48ac9e7 100644 Binary files a/_module/ncs/nw_s1_gazegood.ncs and b/_module/ncs/nw_s1_gazegood.ncs differ diff --git a/_module/ncs/nw_s1_gazelaw.ncs b/_module/ncs/nw_s1_gazelaw.ncs index 9a9ae20..e761395 100644 Binary files a/_module/ncs/nw_s1_gazelaw.ncs and b/_module/ncs/nw_s1_gazelaw.ncs differ diff --git a/_module/ncs/nw_s1_gazestun.ncs b/_module/ncs/nw_s1_gazestun.ncs index c7f6c10..0576c01 100644 Binary files a/_module/ncs/nw_s1_gazestun.ncs and b/_module/ncs/nw_s1_gazestun.ncs differ diff --git a/_module/ncs/nw_s1_hndbreath.ncs b/_module/ncs/nw_s1_hndbreath.ncs index 4d18c31..92b95aa 100644 Binary files a/_module/ncs/nw_s1_hndbreath.ncs and b/_module/ncs/nw_s1_hndbreath.ncs differ diff --git a/_module/ncs/nw_s1_howlconf.ncs b/_module/ncs/nw_s1_howlconf.ncs index cf35567..74bfa23 100644 Binary files a/_module/ncs/nw_s1_howlconf.ncs and b/_module/ncs/nw_s1_howlconf.ncs differ diff --git a/_module/ncs/nw_s1_howldaze.ncs b/_module/ncs/nw_s1_howldaze.ncs index 6d49192..7357038 100644 Binary files a/_module/ncs/nw_s1_howldaze.ncs and b/_module/ncs/nw_s1_howldaze.ncs differ diff --git a/_module/ncs/nw_s1_howldeath.ncs b/_module/ncs/nw_s1_howldeath.ncs index 477997d..b5672a0 100644 Binary files a/_module/ncs/nw_s1_howldeath.ncs and b/_module/ncs/nw_s1_howldeath.ncs differ diff --git a/_module/ncs/nw_s1_howlfear.ncs b/_module/ncs/nw_s1_howlfear.ncs index 36d1159..5d225fa 100644 Binary files a/_module/ncs/nw_s1_howlfear.ncs and b/_module/ncs/nw_s1_howlfear.ncs differ diff --git a/_module/ncs/nw_s1_howlparal.ncs b/_module/ncs/nw_s1_howlparal.ncs index bdb56c5..9f2f26a 100644 Binary files a/_module/ncs/nw_s1_howlparal.ncs and b/_module/ncs/nw_s1_howlparal.ncs differ diff --git a/_module/ncs/nw_s1_howlsonic.ncs b/_module/ncs/nw_s1_howlsonic.ncs index 121bc04..835ebfe 100644 Binary files a/_module/ncs/nw_s1_howlsonic.ncs and b/_module/ncs/nw_s1_howlsonic.ncs differ diff --git a/_module/ncs/nw_s1_howlstun.ncs b/_module/ncs/nw_s1_howlstun.ncs index 665b6cd..04d59ad 100644 Binary files a/_module/ncs/nw_s1_howlstun.ncs and b/_module/ncs/nw_s1_howlstun.ncs differ diff --git a/_module/ncs/nw_s1_krenscare.ncs b/_module/ncs/nw_s1_krenscare.ncs index 48ee1a3..8ef087a 100644 Binary files a/_module/ncs/nw_s1_krenscare.ncs and b/_module/ncs/nw_s1_krenscare.ncs differ diff --git a/_module/ncs/nw_s1_mephsalt.ncs b/_module/ncs/nw_s1_mephsalt.ncs index 22d2258..f6d2c83 100644 Binary files a/_module/ncs/nw_s1_mephsalt.ncs and b/_module/ncs/nw_s1_mephsalt.ncs differ diff --git a/_module/ncs/nw_s1_mephsteam.ncs b/_module/ncs/nw_s1_mephsteam.ncs index 0f3078c..9bad531 100644 Binary files a/_module/ncs/nw_s1_mephsteam.ncs and b/_module/ncs/nw_s1_mephsteam.ncs differ diff --git a/_module/ncs/nw_s1_mumundead.ncs b/_module/ncs/nw_s1_mumundead.ncs index d87f69f..9dfaa06 100644 Binary files a/_module/ncs/nw_s1_mumundead.ncs and b/_module/ncs/nw_s1_mumundead.ncs differ diff --git a/_module/ncs/nw_s1_pulschrdr.ncs b/_module/ncs/nw_s1_pulschrdr.ncs index 3d8770a..f06a730 100644 Binary files a/_module/ncs/nw_s1_pulschrdr.ncs and b/_module/ncs/nw_s1_pulschrdr.ncs differ diff --git a/_module/ncs/nw_s1_pulscold.ncs b/_module/ncs/nw_s1_pulscold.ncs index c89ae1c..8e3107d 100644 Binary files a/_module/ncs/nw_s1_pulscold.ncs and b/_module/ncs/nw_s1_pulscold.ncs differ diff --git a/_module/ncs/nw_s1_pulscondr.ncs b/_module/ncs/nw_s1_pulscondr.ncs index e34bd8e..6f541ab 100644 Binary files a/_module/ncs/nw_s1_pulscondr.ncs and b/_module/ncs/nw_s1_pulscondr.ncs differ diff --git a/_module/ncs/nw_s1_pulsdeath.ncs b/_module/ncs/nw_s1_pulsdeath.ncs index a68fbc0..efc8451 100644 Binary files a/_module/ncs/nw_s1_pulsdeath.ncs and b/_module/ncs/nw_s1_pulsdeath.ncs differ diff --git a/_module/ncs/nw_s1_pulsdexdr.ncs b/_module/ncs/nw_s1_pulsdexdr.ncs index 4017889..0602373 100644 Binary files a/_module/ncs/nw_s1_pulsdexdr.ncs and b/_module/ncs/nw_s1_pulsdexdr.ncs differ diff --git a/_module/ncs/nw_s1_pulsdis.ncs b/_module/ncs/nw_s1_pulsdis.ncs index 59a964a..84c854b 100644 Binary files a/_module/ncs/nw_s1_pulsdis.ncs and b/_module/ncs/nw_s1_pulsdis.ncs differ diff --git a/_module/ncs/nw_s1_pulselec.ncs b/_module/ncs/nw_s1_pulselec.ncs index a6da792..edff415 100644 Binary files a/_module/ncs/nw_s1_pulselec.ncs and b/_module/ncs/nw_s1_pulselec.ncs differ diff --git a/_module/ncs/nw_s1_pulsfire.ncs b/_module/ncs/nw_s1_pulsfire.ncs index 8010551..7c0bcde 100644 Binary files a/_module/ncs/nw_s1_pulsfire.ncs and b/_module/ncs/nw_s1_pulsfire.ncs differ diff --git a/_module/ncs/nw_s1_pulsholy.ncs b/_module/ncs/nw_s1_pulsholy.ncs index 6847904..5dc4cd9 100644 Binary files a/_module/ncs/nw_s1_pulsholy.ncs and b/_module/ncs/nw_s1_pulsholy.ncs differ diff --git a/_module/ncs/nw_s1_pulsintdr.ncs b/_module/ncs/nw_s1_pulsintdr.ncs index adb4194..d91a3f2 100644 Binary files a/_module/ncs/nw_s1_pulsintdr.ncs and b/_module/ncs/nw_s1_pulsintdr.ncs differ diff --git a/_module/ncs/nw_s1_pulslvldr.ncs b/_module/ncs/nw_s1_pulslvldr.ncs index 14f5db6..042c431 100644 Binary files a/_module/ncs/nw_s1_pulslvldr.ncs and b/_module/ncs/nw_s1_pulslvldr.ncs differ diff --git a/_module/ncs/nw_s1_pulsneg.ncs b/_module/ncs/nw_s1_pulsneg.ncs index 299e67b..ab5a347 100644 Binary files a/_module/ncs/nw_s1_pulsneg.ncs and b/_module/ncs/nw_s1_pulsneg.ncs differ diff --git a/_module/ncs/nw_s1_pulspois.ncs b/_module/ncs/nw_s1_pulspois.ncs index 936db9a..d5c3863 100644 Binary files a/_module/ncs/nw_s1_pulspois.ncs and b/_module/ncs/nw_s1_pulspois.ncs differ diff --git a/_module/ncs/nw_s1_pulsspore.ncs b/_module/ncs/nw_s1_pulsspore.ncs index 5d52d6d..ca31fbe 100644 Binary files a/_module/ncs/nw_s1_pulsspore.ncs and b/_module/ncs/nw_s1_pulsspore.ncs differ diff --git a/_module/ncs/nw_s1_pulsstrdr.ncs b/_module/ncs/nw_s1_pulsstrdr.ncs index e462589..1579dbd 100644 Binary files a/_module/ncs/nw_s1_pulsstrdr.ncs and b/_module/ncs/nw_s1_pulsstrdr.ncs differ diff --git a/_module/ncs/nw_s1_pulswind.ncs b/_module/ncs/nw_s1_pulswind.ncs index d465597..a34f40d 100644 Binary files a/_module/ncs/nw_s1_pulswind.ncs and b/_module/ncs/nw_s1_pulswind.ncs differ diff --git a/_module/ncs/nw_s1_pulswisdr.ncs b/_module/ncs/nw_s1_pulswisdr.ncs index 07f3328..7fbffbe 100644 Binary files a/_module/ncs/nw_s1_pulswisdr.ncs and b/_module/ncs/nw_s1_pulswisdr.ncs differ diff --git a/_module/ncs/nw_s1_smokeclaw.ncs b/_module/ncs/nw_s1_smokeclaw.ncs index 7a3090b..7fe3144 100644 Binary files a/_module/ncs/nw_s1_smokeclaw.ncs and b/_module/ncs/nw_s1_smokeclaw.ncs differ diff --git a/_module/ncs/nw_s1_stink_a.ncs b/_module/ncs/nw_s1_stink_a.ncs index 51c84ef..72910dd 100644 Binary files a/_module/ncs/nw_s1_stink_a.ncs and b/_module/ncs/nw_s1_stink_a.ncs differ diff --git a/_module/ncs/nw_s1_tyrantfga.ncs b/_module/ncs/nw_s1_tyrantfga.ncs index 75a0fcd..abde1a1 100644 Binary files a/_module/ncs/nw_s1_tyrantfga.ncs and b/_module/ncs/nw_s1_tyrantfga.ncs differ diff --git a/_module/ncs/nw_s1_tyrantfog.ncs b/_module/ncs/nw_s1_tyrantfog.ncs index 2274fc7..d77e344 100644 Binary files a/_module/ncs/nw_s1_tyrantfog.ncs and b/_module/ncs/nw_s1_tyrantfog.ncs differ diff --git a/_module/ncs/nw_s2_divprot.ncs b/_module/ncs/nw_s2_divprot.ncs index ac6c9a6..03deb35 100644 Binary files a/_module/ncs/nw_s2_divprot.ncs and b/_module/ncs/nw_s2_divprot.ncs differ diff --git a/_module/ncs/nw_s3_balordeth.ncs b/_module/ncs/nw_s3_balordeth.ncs index 1f4bc0e..d4120c4 100644 Binary files a/_module/ncs/nw_s3_balordeth.ncs and b/_module/ncs/nw_s3_balordeth.ncs differ diff --git a/_module/ncs/oldmanhb.ncs b/_module/ncs/oldmanhb.ncs index d27d482..d2b4916 100644 Binary files a/_module/ncs/oldmanhb.ncs and b/_module/ncs/oldmanhb.ncs differ diff --git a/_module/ncs/op10shaman.ncs b/_module/ncs/op10shaman.ncs index b73c5e4..d1db965 100644 Binary files a/_module/ncs/op10shaman.ncs and b/_module/ncs/op10shaman.ncs differ diff --git a/_module/ncs/op9shaman.ncs b/_module/ncs/op9shaman.ncs index 0eb7d87..8dcd7f1 100644 Binary files a/_module/ncs/op9shaman.ncs and b/_module/ncs/op9shaman.ncs differ diff --git a/_module/ncs/orccontrap.ncs b/_module/ncs/orccontrap.ncs index 5253d50..0c1c003 100644 Binary files a/_module/ncs/orccontrap.ncs and b/_module/ncs/orccontrap.ncs differ diff --git a/_module/ncs/pathfinding.ncs b/_module/ncs/pathfinding.ncs index 32a2f37..bec8fe5 100644 Binary files a/_module/ncs/pathfinding.ncs and b/_module/ncs/pathfinding.ncs differ diff --git a/_module/ncs/pathfindingrun.ncs b/_module/ncs/pathfindingrun.ncs index 6cd08b1..70fe79d 100644 Binary files a/_module/ncs/pathfindingrun.ncs and b/_module/ncs/pathfindingrun.ncs differ diff --git a/_module/ncs/pathfindingscale.ncs b/_module/ncs/pathfindingscale.ncs index b5a93ca..35ad843 100644 Binary files a/_module/ncs/pathfindingscale.ncs and b/_module/ncs/pathfindingscale.ncs differ diff --git a/_module/ncs/pc_savebuffs.ncs b/_module/ncs/pc_savebuffs.ncs index 9441325..4becfad 100644 Binary files a/_module/ncs/pc_savebuffs.ncs and b/_module/ncs/pc_savebuffs.ncs differ diff --git a/_module/ncs/pe_buffing.ncs b/_module/ncs/pe_buffing.ncs index 3eaeaea..1bfa628 100644 Binary files a/_module/ncs/pe_buffing.ncs and b/_module/ncs/pe_buffing.ncs differ diff --git a/_module/ncs/pe_crafting.ncs b/_module/ncs/pe_crafting.ncs index 6f7cb01..bdd5ebf 100644 Binary files a/_module/ncs/pe_crafting.ncs and b/_module/ncs/pe_crafting.ncs differ diff --git a/_module/ncs/pe_debug.ncs b/_module/ncs/pe_debug.ncs index 04366bf..62a7072 100644 Binary files a/_module/ncs/pe_debug.ncs and b/_module/ncs/pe_debug.ncs differ diff --git a/_module/ncs/pe_henchmen.ncs b/_module/ncs/pe_henchmen.ncs index 7f0271e..f6def9a 100644 Binary files a/_module/ncs/pe_henchmen.ncs and b/_module/ncs/pe_henchmen.ncs differ diff --git a/_module/ncs/pe_mod_set.ncs b/_module/ncs/pe_mod_set.ncs index 5a09e7d..0909df6 100644 Binary files a/_module/ncs/pe_mod_set.ncs and b/_module/ncs/pe_mod_set.ncs differ diff --git a/_module/ncs/pi_buffing.ncs b/_module/ncs/pi_buffing.ncs index e654f65..d604999 100644 Binary files a/_module/ncs/pi_buffing.ncs and b/_module/ncs/pi_buffing.ncs differ diff --git a/_module/ncs/pi_crafting.ncs b/_module/ncs/pi_crafting.ncs index 7ba191b..4b55c22 100644 Binary files a/_module/ncs/pi_crafting.ncs and b/_module/ncs/pi_crafting.ncs differ diff --git a/_module/ncs/pi_debug.ncs b/_module/ncs/pi_debug.ncs index 25f33de..e0375a1 100644 Binary files a/_module/ncs/pi_debug.ncs and b/_module/ncs/pi_debug.ncs differ diff --git a/_module/ncs/pi_forcerest.ncs b/_module/ncs/pi_forcerest.ncs index 0466eb6..f0c5732 100644 Binary files a/_module/ncs/pi_forcerest.ncs and b/_module/ncs/pi_forcerest.ncs differ diff --git a/_module/ncs/pi_henchmen.ncs b/_module/ncs/pi_henchmen.ncs index f9c4726..038a6d1 100644 Binary files a/_module/ncs/pi_henchmen.ncs and b/_module/ncs/pi_henchmen.ncs differ diff --git a/_module/ncs/placardmessage.ncs b/_module/ncs/placardmessage.ncs index 7c03601..2b0084d 100644 Binary files a/_module/ncs/placardmessage.ncs and b/_module/ncs/placardmessage.ncs differ diff --git a/_module/ncs/releaseorc.ncs b/_module/ncs/releaseorc.ncs index d63f90c..3dace95 100644 Binary files a/_module/ncs/releaseorc.ncs and b/_module/ncs/releaseorc.ncs differ diff --git a/_module/ncs/returnop1.ncs b/_module/ncs/returnop1.ncs index ddf1bfc..03144be 100644 Binary files a/_module/ncs/returnop1.ncs and b/_module/ncs/returnop1.ncs differ diff --git a/_module/ncs/returnop10.ncs b/_module/ncs/returnop10.ncs index 955193f..9c1e629 100644 Binary files a/_module/ncs/returnop10.ncs and b/_module/ncs/returnop10.ncs differ diff --git a/_module/ncs/returnop10sham.ncs b/_module/ncs/returnop10sham.ncs index ff32ff9..3ca00fe 100644 Binary files a/_module/ncs/returnop10sham.ncs and b/_module/ncs/returnop10sham.ncs differ diff --git a/_module/ncs/returnop2.ncs b/_module/ncs/returnop2.ncs index 2ec453b..9d5845f 100644 Binary files a/_module/ncs/returnop2.ncs and b/_module/ncs/returnop2.ncs differ diff --git a/_module/ncs/returnop3.ncs b/_module/ncs/returnop3.ncs index 9b8b5cc..d2a5523 100644 Binary files a/_module/ncs/returnop3.ncs and b/_module/ncs/returnop3.ncs differ diff --git a/_module/ncs/returnop4.ncs b/_module/ncs/returnop4.ncs index 39efbac..83c3838 100644 Binary files a/_module/ncs/returnop4.ncs and b/_module/ncs/returnop4.ncs differ diff --git a/_module/ncs/returnop5.ncs b/_module/ncs/returnop5.ncs index 9de0b92..ad4deff 100644 Binary files a/_module/ncs/returnop5.ncs and b/_module/ncs/returnop5.ncs differ diff --git a/_module/ncs/returnop6.ncs b/_module/ncs/returnop6.ncs index 2f3a1b9..aac1e09 100644 Binary files a/_module/ncs/returnop6.ncs and b/_module/ncs/returnop6.ncs differ diff --git a/_module/ncs/returnop7.ncs b/_module/ncs/returnop7.ncs index bec873d..88690c5 100644 Binary files a/_module/ncs/returnop7.ncs and b/_module/ncs/returnop7.ncs differ diff --git a/_module/ncs/returnop8.ncs b/_module/ncs/returnop8.ncs index 7cf0ab3..23c6a06 100644 Binary files a/_module/ncs/returnop8.ncs and b/_module/ncs/returnop8.ncs differ diff --git a/_module/ncs/returnop9.ncs b/_module/ncs/returnop9.ncs index 926f14d..3db6d26 100644 Binary files a/_module/ncs/returnop9.ncs and b/_module/ncs/returnop9.ncs differ diff --git a/_module/ncs/returnop9sham.ncs b/_module/ncs/returnop9sham.ncs index b5f4da6..8c44cae 100644 Binary files a/_module/ncs/returnop9sham.ncs and b/_module/ncs/returnop9sham.ncs differ diff --git a/_module/ncs/rove1.ncs b/_module/ncs/rove1.ncs index 5cca883..a690315 100644 Binary files a/_module/ncs/rove1.ncs and b/_module/ncs/rove1.ncs differ diff --git a/_module/ncs/rove1attack.ncs b/_module/ncs/rove1attack.ncs index ef9a2af..6ee5267 100644 Binary files a/_module/ncs/rove1attack.ncs and b/_module/ncs/rove1attack.ncs differ diff --git a/_module/ncs/rove2.ncs b/_module/ncs/rove2.ncs index 3e93d30..605275e 100644 Binary files a/_module/ncs/rove2.ncs and b/_module/ncs/rove2.ncs differ diff --git a/_module/ncs/rove2attack.ncs b/_module/ncs/rove2attack.ncs index c732a2e..5f49c03 100644 Binary files a/_module/ncs/rove2attack.ncs and b/_module/ncs/rove2attack.ncs differ diff --git a/_module/ncs/signpost.ncs b/_module/ncs/signpost.ncs index dff7390..e524ea1 100644 Binary files a/_module/ncs/signpost.ncs and b/_module/ncs/signpost.ncs differ diff --git a/_module/ncs/spawntreasure.ncs b/_module/ncs/spawntreasure.ncs index 2bc8e6e..1b57a32 100644 Binary files a/_module/ncs/spawntreasure.ncs and b/_module/ncs/spawntreasure.ncs differ diff --git a/_module/ncs/staticspawn.ncs b/_module/ncs/staticspawn.ncs index 8dbc5ca..5901af7 100644 Binary files a/_module/ncs/staticspawn.ncs and b/_module/ncs/staticspawn.ncs differ diff --git a/_module/ncs/staticspawn1.ncs b/_module/ncs/staticspawn1.ncs index 0864994..82e312b 100644 Binary files a/_module/ncs/staticspawn1.ncs and b/_module/ncs/staticspawn1.ncs differ diff --git a/_module/ncs/staticspawn10.ncs b/_module/ncs/staticspawn10.ncs index 9a0e309..197bf77 100644 Binary files a/_module/ncs/staticspawn10.ncs and b/_module/ncs/staticspawn10.ncs differ diff --git a/_module/ncs/staticspawn2.ncs b/_module/ncs/staticspawn2.ncs index 356fdf3..441de6c 100644 Binary files a/_module/ncs/staticspawn2.ncs and b/_module/ncs/staticspawn2.ncs differ diff --git a/_module/ncs/staticspawn3.ncs b/_module/ncs/staticspawn3.ncs index fbdba33..842cf65 100644 Binary files a/_module/ncs/staticspawn3.ncs and b/_module/ncs/staticspawn3.ncs differ diff --git a/_module/ncs/staticspawn4.ncs b/_module/ncs/staticspawn4.ncs index de32b46..6472855 100644 Binary files a/_module/ncs/staticspawn4.ncs and b/_module/ncs/staticspawn4.ncs differ diff --git a/_module/ncs/staticspawn5.ncs b/_module/ncs/staticspawn5.ncs index e4dbc85..d642018 100644 Binary files a/_module/ncs/staticspawn5.ncs and b/_module/ncs/staticspawn5.ncs differ diff --git a/_module/ncs/staticspawn6.ncs b/_module/ncs/staticspawn6.ncs index ed60eba..aca239e 100644 Binary files a/_module/ncs/staticspawn6.ncs and b/_module/ncs/staticspawn6.ncs differ diff --git a/_module/ncs/staticspawn7.ncs b/_module/ncs/staticspawn7.ncs index a78f7ca..377783b 100644 Binary files a/_module/ncs/staticspawn7.ncs and b/_module/ncs/staticspawn7.ncs differ diff --git a/_module/ncs/staticspawn8.ncs b/_module/ncs/staticspawn8.ncs index 29ce940..9820555 100644 Binary files a/_module/ncs/staticspawn8.ncs and b/_module/ncs/staticspawn8.ncs differ diff --git a/_module/ncs/staticspawn9.ncs b/_module/ncs/staticspawn9.ncs index 5aae5a0..2aaf046 100644 Binary files a/_module/ncs/staticspawn9.ncs and b/_module/ncs/staticspawn9.ncs differ diff --git a/_module/ncs/trashcan.ncs b/_module/ncs/trashcan.ncs index cb3a8c4..6ffcefc 100644 Binary files a/_module/ncs/trashcan.ncs and b/_module/ncs/trashcan.ncs differ diff --git a/_module/ncs/x0_ch_hen_combat.ncs b/_module/ncs/x0_ch_hen_combat.ncs index 12959ea..e3bb772 100644 Binary files a/_module/ncs/x0_ch_hen_combat.ncs and b/_module/ncs/x0_ch_hen_combat.ncs differ diff --git a/_module/ncs/x0_ch_hen_conv.ncs b/_module/ncs/x0_ch_hen_conv.ncs index 2fda87c..d5a050d 100644 Binary files a/_module/ncs/x0_ch_hen_conv.ncs and b/_module/ncs/x0_ch_hen_conv.ncs differ diff --git a/_module/ncs/xx_pc_1_hb.ncs b/_module/ncs/xx_pc_1_hb.ncs index f1feac4..158ec1c 100644 Binary files a/_module/ncs/xx_pc_1_hb.ncs and b/_module/ncs/xx_pc_1_hb.ncs differ diff --git a/_module/ncs/xx_pc_2_percept.ncs b/_module/ncs/xx_pc_2_percept.ncs index cf5b2e8..7228c6a 100644 Binary files a/_module/ncs/xx_pc_2_percept.ncs and b/_module/ncs/xx_pc_2_percept.ncs differ diff --git a/_module/ncs/xx_pc_3_endround.ncs b/_module/ncs/xx_pc_3_endround.ncs index 6002996..8eefd3c 100644 Binary files a/_module/ncs/xx_pc_3_endround.ncs and b/_module/ncs/xx_pc_3_endround.ncs differ diff --git a/_module/ncs/xx_pc_4_convers.ncs b/_module/ncs/xx_pc_4_convers.ncs index 6b3e206..446b8bb 100644 Binary files a/_module/ncs/xx_pc_4_convers.ncs and b/_module/ncs/xx_pc_4_convers.ncs differ diff --git a/_module/ncs/xx_pc_5_phyatked.ncs b/_module/ncs/xx_pc_5_phyatked.ncs index 59fc6ee..04ea88d 100644 Binary files a/_module/ncs/xx_pc_5_phyatked.ncs and b/_module/ncs/xx_pc_5_phyatked.ncs differ diff --git a/_module/ncs/xx_pc_6_damaged.ncs b/_module/ncs/xx_pc_6_damaged.ncs index 619825e..9d2711d 100644 Binary files a/_module/ncs/xx_pc_6_damaged.ncs and b/_module/ncs/xx_pc_6_damaged.ncs differ diff --git a/_module/ncs/xx_pc_8_disturb.ncs b/_module/ncs/xx_pc_8_disturb.ncs index 6ef0126..4b6cacb 100644 Binary files a/_module/ncs/xx_pc_8_disturb.ncs and b/_module/ncs/xx_pc_8_disturb.ncs differ diff --git a/_module/ncs/xx_pc_b_castat.ncs b/_module/ncs/xx_pc_b_castat.ncs index 136f51f..45df5ab 100644 Binary files a/_module/ncs/xx_pc_b_castat.ncs and b/_module/ncs/xx_pc_b_castat.ncs differ diff --git a/_module/ncs/xx_pc_e_blocked.ncs b/_module/ncs/xx_pc_e_blocked.ncs index 35b29c3..ee41a8d 100644 Binary files a/_module/ncs/xx_pc_e_blocked.ncs and b/_module/ncs/xx_pc_e_blocked.ncs differ diff --git a/_module/nss/0c_assoc_actions.nss b/_module/nss/0c_assoc_actions.nss index 74975d4..d5b1867 100644 --- a/_module/nss/0c_assoc_actions.nss +++ b/_module/nss/0c_assoc_actions.nss @@ -17,10 +17,21 @@ void main() // Scout ahead is done int 0e_ch_1_hb (heartbeat script). if(sAction == "Scout") { - ai_ClearCreatureActions(); - ai_HaveCreatureSpeak(oAssociate, 4, ":29:35:46:"); - ai_SetAIMode(oAssociate, AI_MODE_SCOUT_AHEAD, TRUE); - ai_ScoutAhead(oAssociate); + if(ai_GetAIMode(oAssociate, AI_MODE_SCOUT_AHEAD)) + { + ai_ClearCreatureActions(); + ai_HaveCreatureSpeak(oAssociate, 6, ":29:35:46:10"); + ai_SetAIMode(oAssociate, AI_MODE_SCOUT_AHEAD, FALSE); + ai_SendMessages(GetName(oAssociate) + " has stopped patrolling ahead.", AI_COLOR_YELLOW, oPC); + } + else + { + ai_ClearCreatureActions(); + ai_HaveCreatureSpeak(oAssociate, 6, ":29:35:46:22:"); + ai_SetAIMode(oAssociate, AI_MODE_SCOUT_AHEAD, TRUE); + ai_SendMessages(GetName(oAssociate) + " is now patrolling ahead.", AI_COLOR_YELLOW, oPC); + ai_ScoutAhead(oAssociate); + } } else if(sAction == "BasicTactics") { @@ -168,5 +179,22 @@ void main() } return; } + else if(sAction == "GetHenchTokens") + { + int nCount, nCntr = 1; + object oHenchman = GetHenchman(oPC, nCntr); + while(oHenchman != OBJECT_INVALID && nCntr <= AI_MAX_HENCHMAN) + { + if(oHenchman == OBJECT_INVALID) break; + if(oHenchman != oAssociate) + { + SetCustomToken(77101 + nCount, GetName(oHenchman)); + nCount++; + } + oHenchman = GetHenchman(oPC, ++nCntr); + } + ai_SetupAllyTargets(oAssociate, oPC); + return; + } aiSaveAssociateModesToDb(oPC, oAssociate); } diff --git a/_module/nss/0c_cast_polymorp.nss b/_module/nss/0c_cast_polymorp.nss index b06f183..9d10420 100644 --- a/_module/nss/0c_cast_polymorp.nss +++ b/_module/nss/0c_cast_polymorp.nss @@ -10,9 +10,6 @@ void main() { object oHenchman = OBJECT_SELF; int nSpell = StringToInt (GetScriptParam ("nSpell")); - // Save the original form so we can check when we turn back (Add 1 so we don't save a 0!). - SetLocalInt (oHenchman, AI_NORMAL_FORM, GetAppearanceType (oHenchman) + 1); - SetLocalString (oHenchman, AI_COMBAT_SCRIPT, "ai_a_polymorphed"); ActionCastSpellAtObject (nSpell, oHenchman, 255, TRUE); } diff --git a/_module/nss/0c_get_convo.nss b/_module/nss/0c_get_convo.nss index 7cdfd40..4e86741 100644 --- a/_module/nss/0c_get_convo.nss +++ b/_module/nss/0c_get_convo.nss @@ -9,8 +9,10 @@ Allows use of ai_conversation for henchman in other modules. */////////////////////////////////////////////////////////////////////////////// #include "0i_actions" +#include "nw_inc_gff" void BeginOriginalHenchmanConversation(string sDialog, object oPC) { + if(AI_DEBUG) ai_Debug("0c_get_convo", "14", "sDialog: (" + sDialog + ")"); BeginConversation(sDialog, oPC); } void main() diff --git a/_module/nss/0c_henchmenspell.nss b/_module/nss/0c_henchmenspell.nss index 5e64cba..f77728d 100644 --- a/_module/nss/0c_henchmenspell.nss +++ b/_module/nss/0c_henchmenspell.nss @@ -32,6 +32,7 @@ void main() { ai_ClearCreatureActions(); object oTarget = GetLocalObject(oCreature, "AI_ALLY_TARGET_" + IntToString(nTarget)); + if(AI_DEBUG) ai_Debug("0c_henchmenspell", "36", " nTarget: " + IntToString(nTarget) + " oTarget: " + GetName(oTarget)); if(oTarget != OBJECT_INVALID && ai_CheckAndCastSpell(oCreature, nSpell, 0, 0.0f, oTarget, oPC)) { DeleteLocalInt(oCreature, "0_SPELL_TO_CAST"); diff --git a/_module/nss/0c_if_ass_convo.nss b/_module/nss/0c_if_ass_convo.nss index 190a0f7..12cb19b 100644 --- a/_module/nss/0c_if_ass_convo.nss +++ b/_module/nss/0c_if_ass_convo.nss @@ -68,7 +68,7 @@ int StartingConditional() { string sHealingIn = IntToString(GetLocalInt(oAssociate, AI_HEAL_IN_COMBAT_LIMIT)) + "%"; string sHealingOut = IntToString(GetLocalInt(oAssociate, AI_HEAL_OUT_OF_COMBAT_LIMIT)) + "%"; - SetCustomToken(AI_BASE_CUSTOM_TOKEN + 5, "I'm healing our allies if they go below " + + SetCustomToken(AI_BASE_CUSTOM_TOKEN + 4, "I'm healing our allies if they go below " + sHealingIn + " health in combat and " + sHealingOut + " out of combat."); } else if(sParam == "Spells") diff --git a/_module/nss/0c_if_hen_target.nss b/_module/nss/0c_if_hen_target.nss new file mode 100644 index 0000000..cab5510 --- /dev/null +++ b/_module/nss/0c_if_hen_target.nss @@ -0,0 +1,16 @@ +/*////////////////////////////////////////////////////////////////////////////// + Script: 0c_if_assoc_mode + Programmer: Philos +//////////////////////////////////////////////////////////////////////////////// + Text Appears When script that checks to see the ally targets have been set for + this number target. + nTarget (INT) : 0 = ALL, 1 PC, 2 Caster, 3-6 = oPC's Henchman, 7 = PC's Familiar + 8 = PC's Animal Companion, 9 = PC's Summon. + Param: + nTarget - The target to check and see if they are set. +*/////////////////////////////////////////////////////////////////////////////// +int StartingConditional() +{ + string sTarget = GetScriptParam("nTarget"); + return GetIsObjectValid(GetLocalObject(OBJECT_SELF, "AI_ALLY_TARGET_" + sTarget)); +} diff --git a/_module/nss/0c_if_not_master.nss b/_module/nss/0c_if_not_master.nss index 73cb84e..7052205 100644 --- a/_module/nss/0c_if_not_master.nss +++ b/_module/nss/0c_if_not_master.nss @@ -5,7 +5,11 @@ Text Appears When script that checks if the speaker is the master of this henchman. */////////////////////////////////////////////////////////////////////////////// +#include "0i_constants" int StartingConditional() { - return !GetIsObjectValid(GetMaster()); + string sInput = GetScriptParam("sInput"); + if(sInput == "Can_Hire_Henchman" && AI_ALLOW_TAKING_HENCHMAN) return !GetIsObjectValid(GetMaster()); + else if(sInput == "Cannot_Hire_Henchman") return !GetIsObjectValid(GetMaster()); + return FALSE; } diff --git a/_module/nss/0c_if_scout.nss b/_module/nss/0c_if_scout.nss index 9f7b0a3..d35ba43 100644 --- a/_module/nss/0c_if_scout.nss +++ b/_module/nss/0c_if_scout.nss @@ -3,9 +3,14 @@ Programmer: Philos //////////////////////////////////////////////////////////////////////////////// Text Appears When script that check if scouting is activated on this server. + + Script Param: nTRUE - + if set to 1 then it will pass TRUE if they are in scout mode. + if set to 0 then it will pass TRUE if they are NOT in scout mode. */////////////////////////////////////////////////////////////////////////////// #include "0i_associates" int StartingConditional() { - return AI_SCOUT_AHEAD_ON; + int nTRUE = StringToInt(GetScriptParam("nTRUE")); + return AI_SCOUT_AHEAD_ON && ai_GetAIMode(OBJECT_SELF, AI_MODE_SCOUT_AHEAD) == nTRUE; } diff --git a/_module/nss/0e_animations.nss b/_module/nss/0e_animations.nss new file mode 100644 index 0000000..0fbb1a6 --- /dev/null +++ b/_module/nss/0e_animations.nss @@ -0,0 +1,26 @@ +/*////////////////////////////////////////////////////////////////////////////// + Script: 0e_animations + Programmer: Philos +//////////////////////////////////////////////////////////////////////////////// + Monster Ambient Animations and Walk Waypoint code. + This code uses the Bioware systems, but can be rewritten to use what ever you + want! + This is called in the nw_c2_default1 - monster heartbeat script. +*/////////////////////////////////////////////////////////////////////////////// +#include "x0_i0_anims" +#include "0i_actions" +void main() +{ + if(!IsInConversation (OBJECT_SELF)) + { + if(GetWalkCondition(NW_WALK_FLAG_CONSTANT)) WalkWayPoints(); + if(GetSpawnInCondition(NW_FLAG_AMBIENT_ANIMATIONS)) PlayMobileAmbientAnimations_NonAvian(); + else if(GetSpawnInCondition(NW_FLAG_AMBIENT_ANIMATIONS_AVIAN)) PlayMobileAmbientAnimations_Avian(); + else if(GetSpawnInCondition(NW_FLAG_IMMOBILE_AMBIENT_ANIMATIONS)) PlayImmobileAmbientAnimations(); + else if(GetLocalInt(GetModule(), AI_RULE_WANDER) && GetStandardFactionReputation(STANDARD_FACTION_HOSTILE) > 89) + { + ai_AmbientAnimations(); + } + } + +} diff --git a/_module/nss/0e_ch_7_ondeath.nss b/_module/nss/0e_ch_7_ondeath.nss index bb36552..8997e84 100644 --- a/_module/nss/0e_ch_7_ondeath.nss +++ b/_module/nss/0e_ch_7_ondeath.nss @@ -10,8 +10,7 @@ void main() { object oCreature = OBJECT_SELF; // Added code to allow for permanent associates in the battle! - if(AI_DEBUG) ai_Debug("0e_ch_7_ondeath", "13", GetName(oCreature) + " has died!" + - " AI_RULE_PERM_ASSOC: " + IntToString(GetLocalInt(GetModule(), AI_RULE_PERM_ASSOC))); + if(AI_DEBUG) ai_Debug("0e_ch_7_ondeath", "13", GetName(oCreature) + " has died!"); object oModule = GetModule(); if(GetLocalInt(oModule, AI_RULE_PERM_ASSOC)) { @@ -22,6 +21,7 @@ void main() oAssociate = GetAssociate(nIndex, oCreature); if(oAssociate != OBJECT_INVALID) { + if(AI_DEBUG) ai_Debug("0e_ch_7_ondeath", "24", GetName(oAssociate) + " being set to permanent!"); SetIsDestroyable(FALSE, FALSE, FALSE, oAssociate); DelayCommand(0.1, ChangeToStandardFaction(oAssociate, STANDARD_FACTION_HOSTILE)); DelayCommand(3.0, SetIsDestroyable(TRUE, FALSE, FALSE, oAssociate)); @@ -31,12 +31,15 @@ void main() // Remove the widget! object oPC = GetMaster(oCreature); if(oPC != OBJECT_INVALID) - { +{ + if(AI_DEBUG) ai_Debug("0e_ch_7_ondeath", "35", GetName(oPC) + " Removing associates widget!"); NuiDestroy(oPC, NuiFindWindow(oPC, ai_GetAssociateType(oPC, oCreature) + AI_WIDGET_NUI)); DelayCommand(0.5, ai_CheckXPPartyScale(oCreature)); DelayCommand(2.0, ai_ClearCreatureActions(TRUE)); } DelayCommand(2.0, ai_ClearCombatState(oCreature)); - ExecuteScript(GetLocalString(oCreature, "AI_ON_DEATH")); + ChangeToStandardFaction(oCreature, STANDARD_FACTION_DEFENDER); + if(AI_DEBUG) ai_Debug("0e_ch_7_ondeath", "42", "Execute second OnDeath script: " + GetLocalString(oCreature, "AI_ON_DEATH")); + ExecuteScript(GetLocalString(oCreature, "AI_ON_DEATH"), oCreature); } diff --git a/_module/nss/0e_nui.nss b/_module/nss/0e_nui.nss index aa5dd96..17717bd 100644 --- a/_module/nss/0e_nui.nss +++ b/_module/nss/0e_nui.nss @@ -8,6 +8,7 @@ #include "nw_inc_gff" #include "x0_i0_assoc" #include "0i_menus" +#include "0i_module" #include "0i_player_target" // Save a window ID to the database. void ai_SaveWindowLocation(object oPC, int nToken, string sAssociateType, string sWindowID); @@ -32,10 +33,6 @@ void ai_RulePercDistInc(object oPC, object oModule, int nIncrement, int nToken); // Adds a spell to a json AI restricted spell list then returns jRules. // bRestrict = TRUE will add to the list FALSE will remove it from the list. json ai_AddRestrictedSpell(json jRules, int nSpell, int bRestrict = TRUE); -// Turns on oAssociate AI, Setting all event scripts. -void ai_TurnOn(object oPC, object oAssociate, string sAssociateType); -// Turns off oAssociate AI, Setting all event scripts. -void ai_TurnOff(object oPC, object oAssociate, string sAssociateType); // Adds a henchman back into the players party. object ai_AddHenchman(object oPC, json jHenchman, location lLocation, int nFamiliar, int nCompanion); @@ -94,10 +91,20 @@ void main() json jData = NuiGetUserData(oPC, nToken); object oAssociate = StringToObject(JsonGetString(JsonArrayGet(jData, 0))); string sAssociateType = ai_GetAssociateType(oPC, oAssociate); + if(ai_GetIsDungeonMaster(oPC)) + { + if(!NuiFindWindow(oPC, "dm" + AI_WIDGET_NUI)) + { + ai_SendMessages(GetName(oPC) + " is now a Dungeon Master! Loading Dungeon Master widget.", AI_COLOR_YELLOW, oPC); + ai_CheckDMStart(oPC); + } + DelayCommand(0.0, NuiDestroy(oPC, nToken)); + return; + } if(!ai_GetIsCharacter(oAssociate) && !GetLocalInt(oPC, "AI_IGNORE_NO_ASSOCIATE") && (oAssociate == OBJECT_INVALID || GetMaster(oAssociate) != oPC)) { - ai_SendMessages("This creature is no longer in your party!", AI_COLOR_RED, oPC); + ai_SendMessages(GetName(oAssociate) + " is no longer in your party!", AI_COLOR_RED, oPC); DelayCommand(0.0, NuiDestroy(oPC, nToken)); return; } @@ -196,57 +203,6 @@ void main() aiSaveAssociateModesToDb(oPC, oPC); } } - else if(sElem == "btn_toggle_assoc_widget") - { - int bWidgetOff = !ai_GetWidgetButton(oPC, BTN_WIDGET_OFF, oPC, "pc"); - string sAssocType; - ai_SetWidgetButton(oPC, BTN_WIDGET_OFF, oPC, "pc", bWidgetOff); - object oAssoc = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oPC); - if(oAssoc != OBJECT_INVALID) - { - sAssocType = ai_GetAssociateType(oPC, oAssoc); - ai_SetWidgetButton(oPC, BTN_WIDGET_OFF, oAssoc, sAssocType, bWidgetOff); - if(bWidgetOff) IsWindowClosed(oPC, sAssocType + AI_WIDGET_NUI); - else ai_CreateWidgetNUI(oPC, oAssoc); - } - oAssoc = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oPC); - if(oAssoc != OBJECT_INVALID) - { - sAssocType = ai_GetAssociateType(oPC, oAssoc); - ai_SetWidgetButton(oPC, BTN_WIDGET_OFF, oAssoc, sAssocType, bWidgetOff); - if(bWidgetOff) IsWindowClosed(oPC, sAssocType + AI_WIDGET_NUI); - else ai_CreateWidgetNUI(oPC, oAssoc); - } - oAssoc = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oPC); - if(oAssoc != OBJECT_INVALID) - { - sAssocType = ai_GetAssociateType(oPC, oAssoc); - ai_SetWidgetButton(oPC, BTN_WIDGET_OFF, oAssoc, sAssocType, bWidgetOff); - if(bWidgetOff) IsWindowClosed(oPC, sAssocType + AI_WIDGET_NUI); - else ai_CreateWidgetNUI(oPC, oAssoc); - } - oAssoc = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oPC); - if(oAssoc != OBJECT_INVALID) - { - sAssocType = ai_GetAssociateType(oPC, oAssoc); - ai_SetWidgetButton(oPC, BTN_WIDGET_OFF, oAssoc, sAssocType, bWidgetOff); - if(bWidgetOff) IsWindowClosed(oPC, sAssocType + AI_WIDGET_NUI); - else ai_CreateWidgetNUI(oPC, oAssoc); - } - int nIndex; - object oHenchman; - for(nIndex = 1; nIndex <= AI_MAX_HENCHMAN; nIndex++) - { - oHenchman = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC, nIndex); - if(oHenchman != OBJECT_INVALID) - { - sAssocType = ai_GetAssociateType(oPC, oHenchman); - ai_SetWidgetButton(oPC, BTN_WIDGET_OFF, oHenchman, sAssocType, bWidgetOff); - if(bWidgetOff) IsWindowClosed(oPC, sAssocType + AI_WIDGET_NUI); - else ai_CreateWidgetNUI(oPC, oHenchman); - } - } - } else if(sElem == "btn_effect_icon") { if(ai_GetMagicMode(oPC, AI_MAGIC_EFFECT_ICON_REPORT)) @@ -280,10 +236,10 @@ void main() { int nMaxHenchmen = StringToInt(sText); if(nMaxHenchmen < 1) nMaxHenchmen = 1; - if(nMaxHenchmen > 12) + if(nMaxHenchmen > AI_MAX_HENCHMAN) { - nMaxHenchmen = 12; - ai_SendMessages("The maximum henchmen for this mod is 12!", AI_COLOR_RED, oPC); + nMaxHenchmen = AI_MAX_HENCHMAN; + ai_SendMessages("The maximum henchmen for this mod is " + IntToString(AI_MAX_HENCHMAN) + "!", AI_COLOR_RED, oPC); } SetMaxHenchmen(nMaxHenchmen); SetLocalInt(oModule, AI_RULE_MAX_HENCHMAN, nMaxHenchmen); @@ -318,7 +274,7 @@ void main() { int nNumber = StringToInt(sText); if(nNumber < 0) nNumber = 0; - else if(nNumber > 100) nNumber = 100; + else if(nNumber > 500) nNumber = 500; SetLocalInt(oModule, AI_INCREASE_MONSTERS_HP, nNumber); jRules = JsonObjectSet(jRules, AI_INCREASE_MONSTERS_HP, JsonInt(nNumber)); } @@ -354,6 +310,12 @@ void main() { SetLocalInt(oModule, AI_RULE_BUFF_MONSTERS, bCheck); jRules = JsonObjectSet(jRules, AI_RULE_BUFF_MONSTERS, JsonInt(bCheck)); + NuiSetBind(oPC, nToken, "chbx_full_buff_event", JsonBool(bCheck)); + } + else if(sElem == "chbx_full_buff_check") + { + SetLocalInt(oModule, AI_RULE_FULL_BUFF_MONSTERS, bCheck); + jRules = JsonObjectSet(jRules, AI_RULE_FULL_BUFF_MONSTERS, JsonInt(bCheck)); } else if(sElem == "chbx_buff_summons_check") { @@ -579,6 +541,60 @@ void main() else if(sElem == "btn_familiar_name") ai_SetCompanionName(oPC, oAssociate, nToken, ASSOCIATE_TYPE_FAMILIAR); else if(sElem == "btn_companion_name") ai_SetCompanionName(oPC, oAssociate, nToken, ASSOCIATE_TYPE_ANIMALCOMPANION); else if(GetStringLeft(sElem, 11) == "btn_plugin_") ai_Plugin_Execute(oPC, sElem); + else if(sElem == "btn_toggle_assoc_widget") + { + int bWidgetOff = !ai_GetWidgetButton(oPC, BTN_WIDGET_OFF, oPC, "pc"); + string sAssocType, sText; + if(bWidgetOff) sText = " Associate Widgets [Off]"; + else sText = " Associate Widgets [On]"; + ai_UpdateToolTipUI(oPC, sAssociateType + AI_COMMAND_NUI, sAssociateType + AI_WIDGET_NUI, "btn_toggle_assoc_widget_tooltip", sText); + ai_SetWidgetButton(oPC, BTN_WIDGET_OFF, oPC, "pc", bWidgetOff); + object oAssoc = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oPC); + if(oAssoc != OBJECT_INVALID) + { + sAssocType = ai_GetAssociateType(oPC, oAssoc); + ai_SetWidgetButton(oPC, BTN_WIDGET_OFF, oAssoc, sAssocType, bWidgetOff); + if(bWidgetOff) IsWindowClosed(oPC, sAssocType + AI_WIDGET_NUI); + else ai_CreateWidgetNUI(oPC, oAssoc); + } + oAssoc = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oPC); + if(oAssoc != OBJECT_INVALID) + { + sAssocType = ai_GetAssociateType(oPC, oAssoc); + ai_SetWidgetButton(oPC, BTN_WIDGET_OFF, oAssoc, sAssocType, bWidgetOff); + if(bWidgetOff) IsWindowClosed(oPC, sAssocType + AI_WIDGET_NUI); + else ai_CreateWidgetNUI(oPC, oAssoc); + } + oAssoc = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oPC); + if(oAssoc != OBJECT_INVALID) + { + sAssocType = ai_GetAssociateType(oPC, oAssoc); + ai_SetWidgetButton(oPC, BTN_WIDGET_OFF, oAssoc, sAssocType, bWidgetOff); + if(bWidgetOff) IsWindowClosed(oPC, sAssocType + AI_WIDGET_NUI); + else ai_CreateWidgetNUI(oPC, oAssoc); + } + oAssoc = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oPC); + if(oAssoc != OBJECT_INVALID) + { + sAssocType = ai_GetAssociateType(oPC, oAssoc); + ai_SetWidgetButton(oPC, BTN_WIDGET_OFF, oAssoc, sAssocType, bWidgetOff); + if(bWidgetOff) IsWindowClosed(oPC, sAssocType + AI_WIDGET_NUI); + else ai_CreateWidgetNUI(oPC, oAssoc); + } + int nIndex; + object oHenchman; + for(nIndex = 1; nIndex <= AI_MAX_HENCHMAN; nIndex++) + { + oHenchman = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC, nIndex); + if(oHenchman != OBJECT_INVALID) + { + sAssocType = ai_GetAssociateType(oPC, oHenchman); + ai_SetWidgetButton(oPC, BTN_WIDGET_OFF, oHenchman, sAssocType, bWidgetOff); + if(bWidgetOff) IsWindowClosed(oPC, sAssocType + AI_WIDGET_NUI); + else ai_CreateWidgetNUI(oPC, oHenchman); + } + } + } } else if(sEvent == "watch") { @@ -597,10 +613,14 @@ void main() jPlugin = JsonArraySet(jPlugin, 1, JsonBool(bCheck)); jPlugins = JsonArraySet(jPlugins, nIndex, jPlugin); ai_SetAssociateDbJson(oPC, "pc", "plugins", jPlugins); - DelayCommand(0.0, NuiDestroy(oPC, NuiFindWindow(oPC, "pc" + AI_WIDGET_NUI))); - DelayCommand(0.1, ai_CreateWidgetNUI(oPC, oPC)); + if(!ai_GetWidgetButton(oPC, BTN_WIDGET_OFF, oAssociate, sAssociateType) || oPC == oAssociate) + { + DelayCommand(0.0, NuiDestroy(oPC, NuiFindWindow(oPC, "pc" + AI_WIDGET_NUI))); + DelayCommand(0.1, ai_CreateWidgetNUI(oPC, oPC)); + } } else if(sElem == "chbx_buff_rest_check") ai_SetWidgetButtonToCheckbox(oPC, BTN_BUFF_REST, oAssociate, sAssociateType, nToken, sElem); + else if(sElem == "chbx_toggle_assoc_widget_check") ai_SetWidgetButtonToCheckbox(oPC, BTN_ASSOC_WIDGETS_OFF, oAssociate, sAssociateType, nToken, sElem); else if(sElem == "chbx_cmd_action_check") ai_SetWidgetButtonToCheckbox(oPC, BTN_CMD_ACTION, oAssociate, sAssociateType, nToken, sElem); else if(sElem == "chbx_cmd_guard_check") ai_SetWidgetButtonToCheckbox(oPC, BTN_CMD_GUARD, oAssociate, sAssociateType, nToken, sElem); else if(sElem == "chbx_cmd_hold_check") ai_SetWidgetButtonToCheckbox(oPC, BTN_CMD_HOLD, oAssociate, sAssociateType, nToken, sElem); @@ -623,8 +643,11 @@ void main() else if(sElem == "chbx_companion_check") ai_SetWidgetButtonToCheckbox(oPC, BTN_CMD_COMPANION, oAssociate, sAssociateType, nToken, sElem); else if(sElem == "cmb_familiar_selected") ai_SetCompanionType(oPC, oAssociate, nToken, ASSOCIATE_TYPE_FAMILIAR); else if(sElem == "cmb_companion_selected") ai_SetCompanionType(oPC, oAssociate, nToken, ASSOCIATE_TYPE_ANIMALCOMPANION); - DelayCommand(0.0, NuiDestroy(oPC, NuiFindWindow(oPC, sAssociateType + AI_WIDGET_NUI))); - DelayCommand(0.1, ai_CreateWidgetNUI(oPC, oAssociate)); + if(!ai_GetWidgetButton(oPC, BTN_WIDGET_OFF, oAssociate, sAssociateType) || oPC == oAssociate) + { + DelayCommand(0.0, NuiDestroy(oPC, NuiFindWindow(oPC, sAssociateType + AI_WIDGET_NUI))); + DelayCommand(0.1, ai_CreateWidgetNUI(oPC, oAssociate)); + } } else if(sEvent == "mousescroll") { @@ -635,6 +658,9 @@ void main() if(sElem == "btn_cmd_follow" && oPC != oAssociate) ai_FollowIncrement(oPC, oAssociate, 1.0, sAssociateType); else if(sElem == "btn_follow_target") ai_FollowIncrement(oPC, oAssociate, 1.0, sAssociateType); + else if(sElem == "btn_buff_long") ai_DelaySpellSpeed(oPC, oAssociate, 0.1, sAssociateType); + else if(sElem == "btn_buff_short") ai_DelaySpellSpeed(oPC, oAssociate, 0.1, sAssociateType); + else if(sElem == "btn_buff_all") ai_DelaySpellSpeed(oPC, oAssociate, 0.1, sAssociateType); } else if(nMouseScroll == -1.0) // Scroll down { @@ -642,6 +668,9 @@ void main() if(sElem == "btn_cmd_follow" && oPC != oAssociate) ai_FollowIncrement(oPC, oAssociate, -1.0, sAssociateType); else if(sElem == "btn_follow_target") ai_FollowIncrement(oPC, oAssociate, -1.0, sAssociateType); + else if(sElem == "btn_buff_long") ai_DelaySpellSpeed(oPC, oAssociate, -0.1, sAssociateType); + else if(sElem == "btn_buff_short") ai_DelaySpellSpeed(oPC, oAssociate, -0.1, sAssociateType); + else if(sElem == "btn_buff_all") ai_DelaySpellSpeed(oPC, oAssociate, -0.1, sAssociateType); } } return; @@ -722,8 +751,11 @@ void main() else if(sElem == "chbx_ignore_traps_check") ai_SetAIButtonToCheckbox(oPC, BTN_AI_IGNORE_TRAPS, oAssociate, sAssociateType, nToken, sElem); else if(sElem == "chbx_perc_range_check") ai_SetAIButtonToCheckbox(oPC, BTN_AI_PERC_RANGE, oAssociate, sAssociateType, nToken, sElem); else if(sElem == "cmb_ai_script_selected") ai_SetAIScript(oPC, oAssociate, nToken); - DelayCommand(0.0, NuiDestroy(oPC, NuiFindWindow(oPC, sAssociateType + AI_WIDGET_NUI))); - DelayCommand(0.1, ai_CreateWidgetNUI(oPC, oAssociate)); + if(!ai_GetWidgetButton(oPC, BTN_WIDGET_OFF, oAssociate, sAssociateType) || oPC == oAssociate) + { + DelayCommand(0.0, NuiDestroy(oPC, NuiFindWindow(oPC, sAssociateType + AI_WIDGET_NUI))); + DelayCommand(0.1, ai_CreateWidgetNUI(oPC, oAssociate)); + } } else if(sEvent == "mousescroll") { @@ -863,6 +895,60 @@ void main() else if(sElem == "btn_update_widget") ai_UpdateAssociateWidget(oPC, oAssociate); else if(GetStringLeft(sElem, 15) == "btn_exe_plugin_") ai_Plugin_Execute(oPC, sElem); else if(GetStringLeft(sElem, 11) == "btn_widget_") ai_SelectWidgetSpellTarget(oPC, oAssociate, sElem); + else if(sElem == "btn_toggle_assoc_widget") + { + int bWidgetOff = !ai_GetWidgetButton(oPC, BTN_WIDGET_OFF, oPC, "pc"); + string sAssocType, sText; + if(bWidgetOff) sText = "Associate Widgets [Off]"; + else sText = "Associate Widgets [On]"; + ai_UpdateToolTipUI(oPC, sAssociateType + AI_COMMAND_NUI, sAssociateType + AI_WIDGET_NUI, "btn_toggle_assoc_widget_tooltip", sText); + ai_SetWidgetButton(oPC, BTN_WIDGET_OFF, oPC, "pc", bWidgetOff); + object oAssoc = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oPC); + if(oAssoc != OBJECT_INVALID) + { + sAssocType = ai_GetAssociateType(oPC, oAssoc); + ai_SetWidgetButton(oPC, BTN_WIDGET_OFF, oAssoc, sAssocType, bWidgetOff); + if(bWidgetOff) IsWindowClosed(oPC, sAssocType + AI_WIDGET_NUI); + else ai_CreateWidgetNUI(oPC, oAssoc); + } + oAssoc = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oPC); + if(oAssoc != OBJECT_INVALID) + { + sAssocType = ai_GetAssociateType(oPC, oAssoc); + ai_SetWidgetButton(oPC, BTN_WIDGET_OFF, oAssoc, sAssocType, bWidgetOff); + if(bWidgetOff) IsWindowClosed(oPC, sAssocType + AI_WIDGET_NUI); + else ai_CreateWidgetNUI(oPC, oAssoc); + } + oAssoc = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oPC); + if(oAssoc != OBJECT_INVALID) + { + sAssocType = ai_GetAssociateType(oPC, oAssoc); + ai_SetWidgetButton(oPC, BTN_WIDGET_OFF, oAssoc, sAssocType, bWidgetOff); + if(bWidgetOff) IsWindowClosed(oPC, sAssocType + AI_WIDGET_NUI); + else ai_CreateWidgetNUI(oPC, oAssoc); + } + oAssoc = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oPC); + if(oAssoc != OBJECT_INVALID) + { + sAssocType = ai_GetAssociateType(oPC, oAssoc); + ai_SetWidgetButton(oPC, BTN_WIDGET_OFF, oAssoc, sAssocType, bWidgetOff); + if(bWidgetOff) IsWindowClosed(oPC, sAssocType + AI_WIDGET_NUI); + else ai_CreateWidgetNUI(oPC, oAssoc); + } + int nIndex; + object oHenchman; + for(nIndex = 1; nIndex <= AI_MAX_HENCHMAN; nIndex++) + { + oHenchman = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC, nIndex); + if(oHenchman != OBJECT_INVALID) + { + sAssocType = ai_GetAssociateType(oPC, oHenchman); + ai_SetWidgetButton(oPC, BTN_WIDGET_OFF, oHenchman, sAssocType, bWidgetOff); + if(bWidgetOff) IsWindowClosed(oPC, sAssocType + AI_WIDGET_NUI); + else ai_CreateWidgetNUI(oPC, oHenchman); + } + } + } } if(sEvent == "mousescroll") { @@ -881,6 +967,9 @@ void main() else if(sElem == "btn_heal_in") ai_Heal_Button(oPC, oAssociate, 5, AI_HEAL_IN_COMBAT_LIMIT, sAssociateType); else if(sElem == "btn_loot") ai_LootRangeIncrement(oPC, oAssociate, 1.0, sAssociateType); else if(sElem == "btn_perc_range") ai_PercRangeIncrement(oPC, oAssociate, 1, sAssociateType, -1); + else if(sElem == "btn_buff_long") ai_DelaySpellSpeed(oPC, oAssociate, 0.1, sAssociateType); + else if(sElem == "btn_buff_short") ai_DelaySpellSpeed(oPC, oAssociate, 0.1, sAssociateType); + else if(sElem == "btn_buff_all") ai_DelaySpellSpeed(oPC, oAssociate, 0.1, sAssociateType); } if(nMouseScroll == -1.0) // Scroll down { @@ -897,6 +986,9 @@ void main() else if(sElem == "btn_heal_in") ai_Heal_Button(oPC, oAssociate, -5, AI_HEAL_IN_COMBAT_LIMIT, sAssociateType); else if(sElem == "btn_loot") ai_LootRangeIncrement(oPC, oAssociate, -1.0, sAssociateType); else if(sElem == "btn_perc_range") ai_PercRangeIncrement(oPC, oAssociate, -1, sAssociateType, -1); + else if(sElem == "btn_buff_long") ai_DelaySpellSpeed(oPC, oAssociate, -0.1, sAssociateType); + else if(sElem == "btn_buff_short") ai_DelaySpellSpeed(oPC, oAssociate, -0.1, sAssociateType); + else if(sElem == "btn_buff_all") ai_DelaySpellSpeed(oPC, oAssociate, -0.1, sAssociateType); } } if(sEvent == "mousedown") @@ -1174,9 +1266,10 @@ void main() { json jPlugins = ai_GetAssociateDbJson(oPC, "pc", "plugins"); jPlugins = ai_Plugin_Add(oPC, jPlugins, "pi_buffing"); - jPlugins = ai_Plugin_Add(oPC, jPlugins, "pi_forcerest"); - jPlugins = ai_Plugin_Add(oPC, jPlugins, "pi_henchmen"); jPlugins = ai_Plugin_Add(oPC, jPlugins, "pi_crafting"); + jPlugins = ai_Plugin_Add(oPC, jPlugins, "pi_forcerest"); + jPlugins = ai_Plugin_Add(oPC, jPlugins, "pi_fast_travel"); + jPlugins = ai_Plugin_Add(oPC, jPlugins, "pi_henchmen"); jPlugins = ai_Plugin_Add(oPC, jPlugins, "pi_mod_set"); jPlugins = ai_Plugin_Add(oPC, jPlugins, "pi_debug"); jPlugins = ai_Plugin_Add(oPC, jPlugins, "pi_test"); @@ -1209,8 +1302,11 @@ void main() ai_SetAssociateDbJson(oPC, "pc", "plugins", jPlugins); DelayCommand(0.0, NuiDestroy(oPC, nToken)); DelayCommand(0.1, ai_CreatePluginNUI(oPC)); - DelayCommand(0.0, NuiDestroy(oPC, NuiFindWindow(oPC, "pc" + AI_WIDGET_NUI))); - DelayCommand(0.1, ai_CreateWidgetNUI(oPC, oPC)); + if(!ai_GetWidgetButton(oPC, BTN_WIDGET_OFF, oAssociate, sAssociateType) || oPC == oAssociate) + { + DelayCommand(0.0, NuiDestroy(oPC, NuiFindWindow(oPC, "pc" + AI_WIDGET_NUI))); + DelayCommand(0.1, ai_CreateWidgetNUI(oPC, oPC)); + } } if(sElem == "btn_clear_plugins") { @@ -1229,8 +1325,11 @@ void main() ai_SetAssociateDbJson(oPC, "pc", "plugins", jPlugins); DelayCommand(0.0, NuiDestroy(oPC, nToken)); DelayCommand(0.1, ai_CreatePluginNUI(oPC)); - DelayCommand(0.0, NuiDestroy(oPC, NuiFindWindow(oPC, "pc" + AI_WIDGET_NUI))); - DelayCommand(0.1, ai_CreateWidgetNUI(oPC, oPC)); + if(!ai_GetWidgetButton(oPC, BTN_WIDGET_OFF, oAssociate, sAssociateType) || oPC == oAssociate) + { + DelayCommand(0.0, NuiDestroy(oPC, NuiFindWindow(oPC, "pc" + AI_WIDGET_NUI))); + DelayCommand(0.1, ai_CreateWidgetNUI(oPC, oPC)); + } } else if(sElem == "btn_add_plugin") { @@ -1249,8 +1348,11 @@ void main() ai_SetAssociateDbJson(oPC, "pc", "plugins", jPlugins); DelayCommand(0.0, NuiDestroy(oPC, nToken)); DelayCommand(0.1, ai_CreatePluginNUI(oPC)); - DelayCommand(0.0, NuiDestroy(oPC, NuiFindWindow(oPC, "pc" + AI_WIDGET_NUI))); - DelayCommand(0.1, ai_CreateWidgetNUI(oPC, oPC)); + if(!ai_GetWidgetButton(oPC, BTN_WIDGET_OFF, oAssociate, sAssociateType) || oPC == oAssociate) + { + DelayCommand(0.0, NuiDestroy(oPC, NuiFindWindow(oPC, "pc" + AI_WIDGET_NUI))); + DelayCommand(0.1, ai_CreateWidgetNUI(oPC, oPC)); + } } else if(GetStringLeft(sElem, 11) == "btn_plugin_") ai_Plugin_Execute(oPC, sElem); } @@ -1265,8 +1367,11 @@ void main() jPlugin = JsonArraySet(jPlugin, 1, JsonBool(bCheck)); jPlugins = JsonArraySet(jPlugins, nIndex, jPlugin); ai_SetAssociateDbJson(oPC, "pc", "plugins", jPlugins); - DelayCommand(0.0, NuiDestroy(oPC, NuiFindWindow(oPC, "pc" + AI_WIDGET_NUI))); - DelayCommand(0.1, ai_CreateWidgetNUI(oPC, oPC)); + if(!ai_GetWidgetButton(oPC, BTN_WIDGET_OFF, oAssociate, sAssociateType) || oPC == oAssociate) + { + DelayCommand(0.0, NuiDestroy(oPC, NuiFindWindow(oPC, "pc" + AI_WIDGET_NUI))); + DelayCommand(0.1, ai_CreateWidgetNUI(oPC, oPC)); + } } } return; @@ -1348,11 +1453,14 @@ void main() } else if(sEvent == "close") { - int nUIToken = NuiFindWindow(oPC, sAssociateType + AI_QUICK_WIDGET_NUI); - if(nUIToken) + if(!ai_GetWidgetButton(oPC, BTN_WIDGET_OFF, oAssociate, sAssociateType) || oPC == oAssociate) { - DelayCommand(0.0, NuiDestroy(oPC, nUIToken)); - DelayCommand(0.1, ai_CreateWidgetNUI(oPC, oAssociate)); + int nUIToken = NuiFindWindow(oPC, sAssociateType + AI_QUICK_WIDGET_NUI); + if(nUIToken) + { + DelayCommand(0.0, NuiDestroy(oPC, nUIToken)); + DelayCommand(0.1, ai_CreateWidgetNUI(oPC, oAssociate)); + } } } return; @@ -1435,11 +1543,14 @@ void main() } else if(sEvent == "close") { - int nUIToken = NuiFindWindow(oPC, sAssociateType + AI_QUICK_WIDGET_NUI); - if(nUIToken) + if(!ai_GetWidgetButton(oPC, BTN_WIDGET_OFF, oAssociate, sAssociateType) || oPC == oAssociate) { - DelayCommand(0.0, NuiDestroy(oPC, nUIToken)); - DelayCommand(0.1, ai_CreateWidgetNUI(oPC, oAssociate)); + int nUIToken = NuiFindWindow(oPC, sAssociateType + AI_QUICK_WIDGET_NUI); + if(nUIToken) + { + DelayCommand(0.0, NuiDestroy(oPC, nUIToken)); + DelayCommand(0.1, ai_CreateWidgetNUI(oPC, oAssociate)); + } } } return; @@ -1615,6 +1726,7 @@ void main() if(GetLocalInt(oAssociate, "AI_KNOWN_SPELL_CHANGE")) { RemoveHenchman(oPC, oAssociate); + ChangeToStandardFaction(oAssociate, STANDARD_FACTION_DEFENDER); json jHenchman = ObjectToJson(oAssociate, TRUE); json jClassList = GetLocalJson(oAssociate, AI_CLASS_LIST_JSON); jHenchman = GffReplaceList(jHenchman, "ClassList", jClassList); @@ -1627,8 +1739,12 @@ void main() AssignCommand(oAssociate, SetIsDestroyable(TRUE, FALSE, FALSE)); DestroyObject(oAssociate); oAssociate = ai_AddHenchman(oPC, jHenchman, lLocation, nFamiliar, nCompanion); + DeleteLocalJson(oAssociate, AI_CLASS_LIST_JSON); DeleteLocalInt(oAssociate, "AI_KNOWN_SPELL_CHANGE"); - DelayCommand(0.1, ai_CreateWidgetNUI(oPC, oAssociate)); + if(!ai_GetWidgetButton(oPC, BTN_WIDGET_OFF, oAssociate, sAssociateType) || oPC == oAssociate) + { + DelayCommand(0.1, ai_CreateWidgetNUI(oPC, oAssociate)); + } } } return; @@ -1698,7 +1814,11 @@ void ai_AddAssociate(object oPC, int nToken, json jAssociate, location lLocation AddHenchman(oPC, oAssociate); DeleteLocalInt(oPC, "AI_IGNORE_NO_ASSOCIATE"); DelayCommand(0.0, NuiDestroy(oPC, nToken)); - DelayCommand(0.1, ai_CreateWidgetNUI(oPC, oAssociate)); + string sAssociateType = ai_GetAssociateType(oPC, oAssociate); + if(!ai_GetWidgetButton(oPC, BTN_WIDGET_OFF, oAssociate, sAssociateType) || oPC == oAssociate) + { + DelayCommand(0.1, ai_CreateWidgetNUI(oPC, oAssociate)); + } if(nRange) SetLocalInt(oAssociate, AI_ASSOCIATE_PERCEPTION, nRange); if(nFamiliar) SummonFamiliar(oAssociate); if(nCompanion) SummonAnimalCompanion(oAssociate); @@ -1816,12 +1936,12 @@ void ai_Perc_Range(object oPC, object oAssociate, int nToken, string sAssociateT SetLocalInt(oPC, "AI_IGNORE_NO_ASSOCIATE", TRUE); int nBtnPercRange = GetLocalInt(oAssociate, AI_ASSOCIATE_PERCEPTION + "_MENU"); string sText, sText2; - float fRange = 20.0; + float fRange = 25.0; if(nBtnPercRange == 8) { sText = "short"; sText2 = " Perception Range Short [10 meters Sight / 10 meters Listen]"; - fRange = 10.0; + fRange = 15.0; } else if(nBtnPercRange == 9) { @@ -1832,7 +1952,7 @@ void ai_Perc_Range(object oPC, object oAssociate, int nToken, string sAssociateT { sText = "long"; sText2 = " Perception Range Long [35 meters Sight / 20 meters Listen]"; - fRange = 35.0; + fRange = 40.0; } else if(nBtnPercRange == 11) { @@ -1914,49 +2034,6 @@ json ai_AddRestrictedSpell(json jRules, int nSpell, int bRestrict = TRUE) SetLocalJson(oModule, AI_RULE_RESTRICTED_SPELLS, jRSpells); return JsonObjectSet(jRules, AI_RULE_RESTRICTED_SPELLS, jRSpells); } -void ai_TurnOn(object oPC, object oTarget, string sAssociateType) -{ - ai_UpdateToolTipUI(oPC, sAssociateType + AI_NUI, sAssociateType + AI_WIDGET_NUI, "btn_ai_tooltip", " AI On"); - ai_SendMessages("AI turned on for " + GetName(oTarget) + ".", AI_COLOR_YELLOW, oPC); - SetEventScript(oTarget, EVENT_SCRIPT_CREATURE_ON_HEARTBEAT, "xx_pc_1_hb"); - SetEventScript(oTarget, EVENT_SCRIPT_CREATURE_ON_NOTICE, "xx_pc_2_percept"); - SetEventScript(oTarget, EVENT_SCRIPT_CREATURE_ON_END_COMBATROUND, "xx_pc_3_endround"); - SetEventScript(oTarget, EVENT_SCRIPT_CREATURE_ON_DIALOGUE, "xx_pc_4_convers"); - SetEventScript(oTarget, EVENT_SCRIPT_CREATURE_ON_MELEE_ATTACKED, "xx_pc_5_phyatked"); - SetEventScript(oTarget, EVENT_SCRIPT_CREATURE_ON_DAMAGED, "xx_pc_6_damaged"); - //SetEventScript(oTarget, EVENT_SCRIPT_CREATURE_ON_DEATH, ""); - SetEventScript(oTarget, EVENT_SCRIPT_CREATURE_ON_DISTURBED, "xx_pc_8_disturb"); - //SetEventScript(oTarget, EVENT_SCRIPT_CREATURE_ON_SPAWN_IN, ""); - //SetEventScript(oTarget, EVENT_SCRIPT_CREATURE_ON_RESTED, ""); - SetEventScript(oTarget, EVENT_SCRIPT_CREATURE_ON_SPELLCASTAT, "xx_pc_b_castat"); - SetEventScript(oTarget, EVENT_SCRIPT_CREATURE_ON_BLOCKED_BY_DOOR, "xx_pc_e_blocked"); - //SetEventScript(oTarget, EVENT_SCRIPT_CREATURE_ON_USER_DEFINED_EVENT, ""); - // This sets the script for the PC to run AI based on class. - ai_SetAssociateAIScript(oTarget, FALSE); - // Set so PC can hear associates talking in combat. - ai_SetListeningPatterns(oTarget); -} -void ai_TurnOff(object oPC, object oAssociate, string sAssociateType) -{ - ai_UpdateToolTipUI(oPC, sAssociateType + AI_NUI, sAssociateType + AI_WIDGET_NUI, "btn_ai_tooltip", " AI Off"); - ai_SendMessages("AI Turned off for " + GetName(oAssociate) + ".", AI_COLOR_YELLOW, oPC); - SetEventScript(oAssociate, EVENT_SCRIPT_CREATURE_ON_HEARTBEAT, ""); - SetEventScript(oAssociate, EVENT_SCRIPT_CREATURE_ON_NOTICE, ""); - SetEventScript(oAssociate, EVENT_SCRIPT_CREATURE_ON_END_COMBATROUND, ""); - SetEventScript(oAssociate, EVENT_SCRIPT_CREATURE_ON_DIALOGUE, ""); - SetEventScript(oAssociate, EVENT_SCRIPT_CREATURE_ON_MELEE_ATTACKED, ""); - SetEventScript(oAssociate, EVENT_SCRIPT_CREATURE_ON_DAMAGED, ""); - //SetEventScript(oAssociate, EVENT_SCRIPT_CREATURE_ON_DEATH, ""); - SetEventScript(oAssociate, EVENT_SCRIPT_CREATURE_ON_DISTURBED, ""); - //SetEventScript(oAssociate, EVENT_SCRIPT_CREATURE_ON_SPAWN_IN, ""); - //SetEventScript(oAssociate, EVENT_SCRIPT_CREATURE_ON_RESTED, ""); - SetEventScript(oAssociate, EVENT_SCRIPT_CREATURE_ON_SPELLCASTAT, ""); - SetEventScript(oAssociate, EVENT_SCRIPT_CREATURE_ON_BLOCKED_BY_DOOR, ""); - //SetEventScript(oAssociate, EVENT_SCRIPT_CREATURE_ON_USER_DEFINED_EVENT, ""); - DeleteLocalInt(oAssociate, "AI_I_AM_BEING_HEALED"); - DeleteLocalString(oAssociate, "AIScript"); - ai_ClearCreatureActions(); -} object ai_AddHenchman(object oPC, json jHenchman, location lLocation, int nFamiliar, int nCompanion) { jHenchman = GffReplaceResRef(jHenchman, "ScriptSpawn", ""); diff --git a/_module/nss/0e_nui_dm.nss b/_module/nss/0e_nui_dm.nss index 4ffd851..4a1dea0 100644 --- a/_module/nss/0e_nui_dm.nss +++ b/_module/nss/0e_nui_dm.nss @@ -5,6 +5,7 @@ Menu event script sEvent: close, click, mousedown, mouseup, watch (if bindwatch is set). /*////////////////////////////////////////////////////////////////////////////// +#include "0i_menus" #include "0i_menus_dm" void ai_SetDMWidgetButtonToCheckbox(object oDM, int nButton, int nToken, string sElem); void ai_SetDMWAccessButtonToCheckbox(object oDM, int nButton, int nToken, string sElem); @@ -32,6 +33,16 @@ void main() // " nToken: " + IntToString(nToken) + " oPC: " + GetName(oPC)); //WriteTimestampedLogEntry("0e_nui, 58, sWndId: " + sWndId + " sEvent: " + sEvent + " sElem: " + sElem + // " nToken: " + IntToString(nToken) + " oDM: " + GetName(oDM)); + if(ai_GetIsCharacter(oDM)) + { + if(!NuiFindWindow(oDM, "pc" + AI_WIDGET_NUI)) + { + ai_SendMessages(GetName(oDM) + " is now a Player! Loading player widget.", AI_COLOR_YELLOW, oDM); + ai_CreateWidgetNUI(oDM, oDM); + } + DelayCommand(0.0, NuiDestroy(oDM, nToken)); + return; + } //************************************************************************** string sName = ai_RemoveIllegalCharacters(GetName(oDM)); // Watch to see if the window moves and save. @@ -197,10 +208,10 @@ void main() { int nMaxHenchmen = StringToInt(JsonGetString(NuiGetBind(oDM, nToken, sElem))); if(nMaxHenchmen < 1) nMaxHenchmen = 1; - if(nMaxHenchmen > 12) + if(nMaxHenchmen > AI_MAX_HENCHMAN) { - nMaxHenchmen = 12; - ai_SendMessages("The maximum henchmen for this mod is 12!", AI_COLOR_RED, oDM); + nMaxHenchmen = AI_MAX_HENCHMAN; + ai_SendMessages("The maximum henchmen for this mod is " + IntToString(AI_MAX_HENCHMAN) + "!", AI_COLOR_RED, oDM); } SetMaxHenchmen(nMaxHenchmen); json jRules = ai_GetCampaignDbJson("rules"); @@ -232,7 +243,7 @@ void main() { int nNumber = StringToInt(JsonGetString(NuiGetBind(oDM, nToken, sElem))); if(nNumber < 0) nNumber = 0; - else if(nNumber > 100) nNumber = 100; + else if(nNumber > 500) nNumber = 500; SetLocalInt(GetModule(), AI_INCREASE_MONSTERS_HP, nNumber); json jRules = ai_GetCampaignDbJson("rules"); jRules = JsonObjectSet(jRules, AI_INCREASE_MONSTERS_HP, JsonInt(nNumber)); @@ -253,6 +264,11 @@ void main() SetLocalInt(oModule, AI_RULE_BUFF_MONSTERS, bCheck); jRules = JsonObjectSet(jRules, AI_RULE_BUFF_MONSTERS, JsonInt(bCheck)); } + else if(sElem == "chbx_full_buff_check") + { + SetLocalInt(oModule, AI_RULE_FULL_BUFF_MONSTERS, bCheck); + jRules = JsonObjectSet(jRules, AI_RULE_FULL_BUFF_MONSTERS, JsonInt(bCheck)); + } else if(sElem == "chbx_buff_summons_check") { SetLocalInt(oModule, AI_RULE_PRESUMMON, bCheck); diff --git a/_module/nss/0e_onclientload.nss b/_module/nss/0e_onclientload.nss index 041d49f..5f211f4 100644 --- a/_module/nss/0e_onclientload.nss +++ b/_module/nss/0e_onclientload.nss @@ -15,9 +15,5 @@ void main() object oCreature = OBJECT_SELF; // This can be moved to the OnClientLoad script event of your module. if(ai_GetIsCharacter(oCreature)) ai_CheckPCStart(oCreature); - // If this is a server you can add this as well. - else if(AI_SERVER && (GetIsDM(oCreature) || GetIsPlayerDM(oCreature))) - { - ai_CheckPCStart(oCreature); - } + else if(ai_GetIsDungeonMaster(oCreature)) ai_CheckDMStart(oCreature); } diff --git a/_module/nss/0e_player_target.nss b/_module/nss/0e_player_target.nss index 16b83fb..0e3b5be 100644 --- a/_module/nss/0e_player_target.nss +++ b/_module/nss/0e_player_target.nss @@ -10,6 +10,8 @@ action of the target. AI_TARGET_MODE is the constant used. AI_TARGET_ASSOCIATE is the associate that triggered the target mode. + + AI_TARGET_MODE_ON defines if the player is in target mode for a henchman instead of the PC. /*////////////////////////////////////////////////////////////////////////////// #include "0i_player_target" void main() @@ -31,6 +33,7 @@ void main() location lLocation = Location(GetArea(oPC), vTarget, GetFacing(oPC)); object oAssociate = GetLocalObject(oPC, AI_TARGET_ASSOCIATE); string sTargetMode = GetLocalString(oPC, AI_TARGET_MODE); + DeleteLocalString(oPC, AI_TARGET_MODE); // ********************* Exiting Target Actions ************************ // If the user manually exited targeting mode without selecting a target, return if(!GetIsObjectValid(oTarget) && vTarget == Vector()) @@ -38,50 +41,61 @@ void main() if(sTargetMode == "ASSOCIATE_ACTION_ALL") { ai_SendMessages("You have exited selecting an action for the party.", AI_COLOR_YELLOW, oPC); - if(ResManGetAliasFor("ai_a_default", RESTYPE_NCS) == "") - { - if(GetLocalInt(oPC, sGhostModeVarname)) ai_OriginalRemoveAllActionMode(oPC); - } - else ai_RemoveAllActionMode(oPC); + ai_RemoveAllActionMode(oPC); + return; } else if(sTargetMode == "ASSOCIATE_ACTION") { ai_SendMessages("You have exited selecting an action for " + GetName(oAssociate) + ".", AI_COLOR_YELLOW, oPC); - if(ResManGetAliasFor("ai_a_default", RESTYPE_NCS) == "") + // Clean up any PC AI being turned on as well as variables. + DeleteLocalObject(oPC, AI_TARGET_ASSOCIATE); + DeleteLocalInt(oPC, AI_TARGET_MODE_ON); + DeleteLocalObject(oPC, AI_TARGET_MODE_ASSOCIATE); + // Make sure the camera goes back to the player since we are leaving henchmen control. + if(GetLocalObject(oPC, "AI_CAMERA_ON_ASSOCIATE") != OBJECT_INVALID) { - if(GetLocalInt(oPC, sGhostModeVarname)) - { - ai_RemoveASpecificEffect(oAssociate, EFFECT_TYPE_CUTSCENEGHOST); - DeleteLocalInt(oAssociate, sGhostModeVarname); - } + DeleteLocalObject(oPC, "AI_CAMERA_ON_ASSOCIATE"); + AttachCamera(oPC, oPC); + if(!GetLocalInt(GetModule(), AI_USING_PRC)) ai_TurnOff(oPC, oPC, "pc"); } - else + ai_SetAIMode(oAssociate, AI_MODE_COMMANDED, FALSE); + if(ai_GetAIMode(oPC, AI_MODE_ACTION_GHOST) && !ai_GetAIMode(oPC, AI_MODE_GHOST) && + GetLocalInt(oAssociate, sGhostModeVarname)) { - ai_SetAIMode(oAssociate, AI_MODE_COMMANDED, FALSE); - if(ai_GetAIMode(oPC, AI_MODE_ACTION_GHOST) && !ai_GetAIMode(oPC, AI_MODE_GHOST) && - GetLocalInt(oAssociate, sGhostModeVarname)) - { - - ai_RemoveASpecificEffect(oAssociate, EFFECT_TYPE_CUTSCENEGHOST); - DeleteLocalInt(oAssociate, sGhostModeVarname); - } - ExecuteScript("nw_ch_ac1", oAssociate); + ai_RemoveASpecificEffect(oAssociate, EFFECT_TYPE_CUTSCENEGHOST); + DeleteLocalInt(oAssociate, sGhostModeVarname); } + ExecuteScript("nw_ch_ac1", oAssociate); + return; } else if(sTargetMode == "ASSOCIATE_GET_TRAP") { ai_SendMessages(GetName(oAssociate) + " has exited selecing a trap!", AI_COLOR_YELLOW, oPC); + if(GetLocalInt(oPC, AI_TARGET_MODE_ON)) ai_EnterAssociateTargetMode(oPC, GetLocalObject(oPC, AI_TARGET_MODE_ASSOCIATE)); + return; } else if(sTargetMode == "ASSOCIATE_PLACE_TRAP") { ai_SendMessages(GetName(oAssociate) + " has exited placing the trap!", AI_COLOR_YELLOW, oPC); + if(GetLocalInt(oPC, AI_TARGET_MODE_ON)) ai_EnterAssociateTargetMode(oPC, GetLocalObject(oPC, AI_TARGET_MODE_ASSOCIATE)); + return; } else if(sTargetMode == "DM_SELECT_CAMERA_VIEW") { AttachCamera(oPC, oPC); ai_SendMessages(GetName(oPC) + " has defaulted camera view back to the player!", AI_COLOR_YELLOW, oPC); + return; + } + // If these actions are canceled and we are in target mode with a henchmen + // then turn target mode back on for that henchmen. + else if(sTargetMode == "ASSOCIATE_USE_ITEM" || + sTargetMode == "ASSOCIATE_USE_FEAT" || + sTargetMode == "ASSOCIATE_CAST_SPELL" || + sTargetMode == "ASSOCIATE_FOLLOW_TARGET") + { + if(GetLocalInt(oPC, AI_TARGET_MODE_ON)) ai_EnterAssociateTargetMode(oPC, GetLocalObject(oPC, AI_TARGET_MODE_ASSOCIATE)); + return; } - return; } // ************************* Targeted Actions ************************** else @@ -89,45 +103,60 @@ void main() // This action makes an associates move to vTarget. if(sTargetMode == "ASSOCIATE_ACTION_ALL") { - if(ResManGetAliasFor("ai_a_default", RESTYPE_NCS) == "") - { - ai_OriginalActionAllAssociates(oPC, oTarget, lLocation); - } - else ai_ActionAllAssociates(oPC, oTarget, lLocation); + ai_ActionAllAssociates(oPC, oTarget, lLocation); + SetLocalString(oPC, AI_TARGET_MODE, "ASSOCIATE_ACTION_ALL"); + EnterTargetingMode(oPC, OBJECT_TYPE_ALL, MOUSECURSOR_ACTION, MOUSECURSOR_NOWALK); + return; } else if(sTargetMode == "ASSOCIATE_ACTION") { - if(ResManGetAliasFor("ai_a_default", RESTYPE_NCS) == "") - { - AssignCommand(oAssociate, ai_OriginalActionAssociate(oPC, oTarget, lLocation)); - } - else AssignCommand(oAssociate, ai_ActionAssociate(oPC, oTarget, lLocation)); + AssignCommand(oAssociate, ai_ActionAssociate(oPC, oTarget, lLocation)); + return; + } + else if(sTargetMode == "ASSOCIATE_FOLLOW_TARGET") + { + ai_SelectFollowTarget(oPC, oAssociate, oTarget); + return; + } + else if(sTargetMode == "ASSOCIATE_GET_TRAP") + { + ai_SelectTrap(oPC, oAssociate, oTarget); + return; + } + else if(sTargetMode == "ASSOCIATE_PLACE_TRAP") + { + AssignCommand(oAssociate, ai_PlaceTrap(oPC, lLocation)); + return; } - else if(sTargetMode == "ASSOCIATE_FOLLOW_TARGET") ai_SelectFollowTarget(oPC, oAssociate, oTarget); - else if(sTargetMode == "ASSOCIATE_GET_TRAP") ai_SelectTrap(oPC, oAssociate, oTarget); - else if(sTargetMode == "ASSOCIATE_PLACE_TRAP") AssignCommand(oAssociate, ai_PlaceTrap(oPC, lLocation)); else if(sTargetMode == "ASSOCIATE_USE_ITEM") { if(oTarget == GetArea(oPC)) oTarget = OBJECT_INVALID; ai_UseWidgetItem(oPC, oAssociate, oTarget, lLocation); DelayCommand(6.0, ai_UpdateAssociateWidget(oPC, oAssociate)); + if(GetLocalInt(oPC, AI_TARGET_MODE_ON)) ai_EnterAssociateTargetMode(oPC, GetLocalObject(oPC, AI_TARGET_MODE_ASSOCIATE)); + return; } else if(sTargetMode == "ASSOCIATE_USE_FEAT") { if(oTarget == GetArea(oPC)) oTarget = OBJECT_INVALID; ai_UseWidgetFeat(oPC, oAssociate, oTarget, lLocation); DelayCommand(6.0, ai_UpdateAssociateWidget(oPC, oAssociate)); + if(GetLocalInt(oPC, AI_TARGET_MODE_ON)) ai_EnterAssociateTargetMode(oPC, GetLocalObject(oPC, AI_TARGET_MODE_ASSOCIATE)); + return; } else if(sTargetMode == "ASSOCIATE_CAST_SPELL") { if(oTarget == GetArea(oPC)) oTarget = OBJECT_INVALID; ai_CastWidgetSpell(oPC, oAssociate, oTarget, lLocation); DelayCommand(6.0, ai_UpdateAssociateWidget(oPC, oAssociate)); + if(GetLocalInt(oPC, AI_TARGET_MODE_ON)) ai_EnterAssociateTargetMode(oPC, GetLocalObject(oPC, AI_TARGET_MODE_ASSOCIATE)); + return; } else if(sTargetMode == "DM_SELECT_CAMERA_VIEW") { AttachCamera(oPC, oTarget); ai_SendMessages(GetName(oPC) + " has changed the camera view to " + GetName(oTarget) + ".", AI_COLOR_YELLOW, oPC); + return; } else if(sTargetMode == "DM_SELECT_OPEN_INVENTORY") { @@ -137,18 +166,20 @@ void main() ai_SendMessages("You have opened the inventory of "+ GetName(oTarget) + ".", AI_COLOR_YELLOW, oPC); } else ai_SendMessages(GetName(oTarget) + " is not in your line of sight!", AI_COLOR_YELLOW, oPC); + return; } else if(GetStringLeft(sTargetMode, 15) == "DM_SELECT_GROUP") { ai_AddToGroup(oPC, oTarget, sTargetMode); + return; } else if(GetStringLeft(sTargetMode, 15) == "DM_ACTION_GROUP") { ai_DMAction(oPC, oTarget, lLocation, sTargetMode); + return; } - // Get saved module player target script and execute it for pass through compatibility. - string sModuleTargetScript = GetLocalString(GetModule(), AI_MODULE_TARGET_EVENT); - ExecuteScript(sModuleTargetScript); } + // Get saved module player target script and execute it for pass through compatibility. + ExecuteScript(GetLocalString(GetModule(), AI_MODULE_TARGET_EVENT)); } } diff --git a/_module/nss/0e_prc_id_events.nss b/_module/nss/0e_prc_id_events.nss new file mode 100644 index 0000000..2d80300 --- /dev/null +++ b/_module/nss/0e_prc_id_events.nss @@ -0,0 +1,317 @@ +/*////////////////////////////////////////////////////////////////////////////// +// Script Name: 0e_prc_id_events +//////////////////////////////////////////////////////////////////////////////// + Infinite Dungeons monster event handler while using the PRC. +*/////////////////////////////////////////////////////////////////////////////// +#include "0i_actions" +#include "x0_i0_assoc" +// Followers special heartbeat script. +void ai_hen_id1_heart(object oCreature); +// Followers special conversation script. +void ai_hen_id1_convo(object oCreature, int nMatch); +// Followers special perception script. +void ai_hen_id1_percept(object oCreature); +// Followers special end of round script. +void ai_hen_id1_endcombat(object oCreature, int bFollower); +// Followers special castat script. +void ai_hen_id1_castat(object oCreature); + +void main() +{ + object oCreature = OBJECT_SELF; + int nEvent = GetCurrentlyRunningEvent(); + int bFollower = GetLocalInt(oCreature, "bFollower"); + switch (nEvent) + { + case EVENT_SCRIPT_CREATURE_ON_HEARTBEAT: + { + if(bFollower) + { + if(GetImmortal(oCreature)) SetImmortal(oCreature, FALSE); + ai_hen_id1_heart(oCreature); + } + else + { + ExecuteScript("nw_c2_default1", oCreature); + ExecuteScript("prc_npc_hb", oCreature); + } + break; + } + case EVENT_SCRIPT_CREATURE_ON_NOTICE: + { + if(bFollower) ai_hen_id1_percept(oCreature); + else + { + ExecuteScript("nw_c2_default2", oCreature); + ExecuteScript("prc_npc_percep", oCreature); + } + break; + } + case EVENT_SCRIPT_CREATURE_ON_DIALOGUE: + { + int nMatch = GetListenPatternNumber(); + if(nMatch == -1) + { + if(ai_GetIsBusy(oCreature) || ai_Disabled(oCreature) || + GetLocalInt(oCreature, AI_AM_I_SEARCHING)) return; + ai_ClearCreatureActions(); + string sConversation = GetLocalString(oCreature, "sConversation"); + if(sConversation != "") BeginConversation(sConversation); + else BeginConversation(); + } + if(bFollower) ai_hen_id1_convo(oCreature, nMatch); + else + { + //ExecuteScript("nw_c2_default4", oCreature); + ExecuteScript("prc_npc_conv", oCreature); + } + break; + } + case EVENT_SCRIPT_CREATURE_ON_MELEE_ATTACKED: + { + if(bFollower) ExecuteScript("nw_ch_ac5", oCreature); + else + { + ExecuteScript("nw_c2_default5", oCreature); + ExecuteScript("prc_npc_physatt", oCreature); + } + break; + } + case EVENT_SCRIPT_CREATURE_ON_DAMAGED: + { + if(bFollower) ExecuteScript("nw_ch_ac6", oCreature); + else + { + ExecuteScript("nw_c2_default6", oCreature); + ExecuteScript("prc_npc_damaged", oCreature); + } + break; + } + case EVENT_SCRIPT_CREATURE_ON_SPELLCASTAT: + { + if(bFollower) ai_hen_id1_castat(oCreature); + else + { + ExecuteScript("nw_c2_defaultb", oCreature); + ExecuteScript("prc_npc_spellat", oCreature); + } + break; + } + case EVENT_SCRIPT_CREATURE_ON_END_COMBATROUND: + { + if(bFollower) ai_hen_id1_endcombat(oCreature, bFollower); + else + { + ExecuteScript("nw_c2_default3", oCreature); + ExecuteScript("prc_npc_combat", oCreature); + } + break; + } + case EVENT_SCRIPT_CREATURE_ON_BLOCKED_BY_DOOR: + { + if(bFollower) ExecuteScript("nw_ch_ace", oCreature); + else + { + ExecuteScript("nw_c2_defaulte", oCreature); + ExecuteScript("prc_npc_blocked", oCreature); + } + break; + } + case EVENT_SCRIPT_CREATURE_ON_RESTED: + { + if(bFollower) ExecuteScript("nw_ch_aca", oCreature); + else ExecuteScript("prc_npc_rested", oCreature); + break; + } + case EVENT_SCRIPT_CREATURE_ON_DISTURBED: + { + if(bFollower) ExecuteScript("nw_ch_ac8", oCreature); + else + { + ExecuteScript("nw_c2_default8", oCreature); + ExecuteScript("prc_npc_disturb", oCreature); + } + break; + } + case EVENT_SCRIPT_CREATURE_ON_DEATH: + { + if(bFollower) ExecuteScript("nw_ch_ac7", oCreature); + else + { + ExecuteScript("nw_c2_default7", oCreature); + } + break; + } + } +} + +void ai_hen_id1_heart(object oCreature) +{ + // Sometimes they slip out of this mode! + if(GetAssociateState(NW_ASC_MODE_DYING, oCreature) && + GetCommandable()) + { + ActionPlayAnimation(ANIMATION_LOOPING_DEAD_FRONT, 1.0, 65.0); + SetCommandable(FALSE); + } + ExecuteScript("nw_ch_ac1", oCreature); +} +void ai_hen_id1_convo(object oCreature, int nMatch) +{ + if(nMatch == ASSOCIATE_COMMAND_INVENTORY) + { + // * cannot modify disabled equipment + if(!GetLocalInt(OBJECT_SELF, "X2_JUST_A_DISABLEEQUIP")) + { + OpenInventory(oCreature, GetLastSpeaker()); + } + // * feedback as to why + else SendMessageToPCByStrRef(GetMaster(), 100895); + return; + } + else if(nMatch == ASSOCIATE_COMMAND_LEAVEPARTY) + { + object oMaster = GetMaster(); + string sTag = GetTag(GetArea(oMaster)); + // * henchman cannot be kicked out in the reaper realm + // * Followers can never be kicked out + if (sTag == "GatesofCania" || GetIsFollower(oCreature)) return; + if(GetIsObjectValid(oMaster)) + { + ai_ClearCreatureActions(); + if(GetAssociateType(oCreature) == ASSOCIATE_TYPE_HENCHMAN) + { + string sConversation = GetLocalString(oCreature, "sConversation"); + if (sConversation == "id1_plotgiver") + { + string sVariable = GetLocalString(oCreature, "sVariable"); + object oDungeon = GetLocalObject(GetModule(), "oCurrentDungeon"); + SetLocalInt(oDungeon, "b" + sVariable + "Gone", FALSE); + } + RemoveHenchman(oMaster); + DestroyObject(oCreature); + } + } + return; + } + ExecuteScript("nw_ch_ac4", oCreature); +} +void ai_hen_id1_percept(object oCreature) +{ + // If henchman is dying and Player disappears then force a respawn of the henchman + if (GetIsHenchmanDying(oCreature)) + { + // The henchman must be removed otherwise their corpse will follow the player + object oOldMaster = GetMaster(); + object oPC = GetLastPerceived(); + int bVanish = GetLastPerceptionVanished(); + if(GetIsObjectValid(oPC) && bVanish) + { + if (oPC == oOldMaster) + { + RemoveHenchman(oPC, oCreature); + // Only in chapter 1 + if(GetTag(GetModule()) == "x0_module1") + { + SetCommandable(TRUE); + DoRespawn(oPC, oCreature); // Should teleport henchman back + } + } + } + } + ExecuteScript("nw_ch_ac2", oCreature); +} +void ai_hen_id1_endcombat(object oCreature, int bFollower) +{ + if (ai_GetIsInCombat(oCreature)) + { + int nNum; + int nLine; + string sString; + int nCreature; + int bIntelligent; + int nRandom = d100(); + // chance of a oneliner + int nOnelinerPercentage = GetLocalInt(GetModule(), "nFlagCombatOneLinerFrequencyValue"); + if(nRandom <= nOnelinerPercentage) + { + string sCreature = GetLocalString(oCreature, "sVariable"); + // if the current creature is hostile towards PCs + if(sCreature != "") + { + object oDungeon = GetLocalObject(GetModule(), "oCurrentDungeon"); + if(GetIsReactionTypeHostile(GetFirstPC())) + { + nCreature = GetLocalInt(oDungeon, "n" + sCreature); + bIntelligent = GetLocalInt(oDungeon, "bListCreature" + IntToString(nCreature) + "Intelligent"); + if(bIntelligent) + { + nNum = GetLocalInt(GetModule(), "nLinesHostileNum"); + nLine = Random(nNum) + 1; + if(nLine > 0) + { + sString = GetLocalString(GetModule(), "sLinesHostile" + IntToString(nLine)); + SpeakString(sString, TALKVOLUME_SHOUT); + } + } + } + else + { + nCreature = GetLocalInt(oDungeon, "n" + sCreature); + bIntelligent = GetLocalInt(oDungeon, "bListCreature" + IntToString(nCreature) + "Intelligent"); + if(bIntelligent) + { + nNum = GetLocalInt(GetModule(), "nLinesAlliesNum"); + nLine = Random(nNum) + 1; + if (nLine > 0) + { + sString = GetLocalString(GetModule(), "sLinesAllies" + IntToString(nLine)); + SpeakString(sString, TALKVOLUME_SHOUT); + } + } + } + } + } + } + if(bFollower) ExecuteScript("nw_ch_ac3", oCreature); + else ExecuteScript("nw_c2_default3", oCreature); +} +void ai_hen_id1_castat(object oCreature) +{ + if(!GetLastSpellHarmful()) + { + int nSpell = GetLastSpell(); + if(nSpell == SPELL_RAISE_DEAD || nSpell == SPELL_RESURRECTION) + { + object oCaster = GetLastSpellCaster(); + // Restore merchant faction to neutral + SetStandardFactionReputation(STANDARD_FACTION_MERCHANT, 100, oCaster); + SetStandardFactionReputation(STANDARD_FACTION_COMMONER, 100, oCaster); + SetStandardFactionReputation(STANDARD_FACTION_DEFENDER, 100, oCaster); + ClearPersonalReputation(oCaster, oCreature); + AssignCommand(oCreature, SurrenderToEnemies()); + AssignCommand(oCreature, ai_ClearCreatureActions(TRUE)); + // Reset henchmen attack state - Oct 28 (BK) + ai_SetAIMode(oCreature, AI_MODE_DEFEND_MASTER, FALSE); + ai_SetAIMode(oCreature, AI_MODE_STAND_GROUND, FALSE); + ai_SetAIMode(oCreature, AI_MODE_SCOUT_AHEAD, FALSE); + ai_SetAIMode(oCreature, AI_MODE_SCOUT_AHEAD, FALSE); + ai_SetAIMode(oCreature, AI_MODE_COMMANDED, FALSE); + // Oct 30 - If player previously hired this hench + // then just have them rejoin automatically + if(GetPlayerHasHired(oCaster, oCreature)) + { + // Feb 11, 2004 - Jon: Don't fire the HireHenchman function if the + // henchman is already oCaster's associate. Fixes a silly little problem + // that occured when you try to raise a henchman who wasn't actually dead. + if(GetMaster(oCreature)!= oCaster) HireHenchman(oCaster, oCreature, TRUE); + } + else + { + string sFile = GetDialogFileToUse(oCaster); + AssignCommand(oCaster, ActionStartConversation(oCreature, sFile)); + } + } + } + ExecuteScript("nw_ch_acb", oCreature); +} diff --git a/_module/nss/0i_actions.nss b/_module/nss/0i_actions.nss index 7d7d2d7..586c9a1 100644 --- a/_module/nss/0i_actions.nss +++ b/_module/nss/0i_actions.nss @@ -152,6 +152,8 @@ void ai_AmbientAnimations(); void ai_DoAssociateCombatRound(object oCreature, object oTarget = OBJECT_INVALID) { + object oMaster = GetMaster(oCreature); + if(GetLocalInt(oMaster, AI_TARGET_MODE_ON) && GetLocalObject(oMaster, AI_TARGET_MODE_ASSOCIATE) == oCreature) return; if(ai_StayClose(oCreature)) return; // Is the target our Player has locked in dead? If so then clear it. if(GetIsDead(GetLocalObject(oCreature, AI_PC_LOCKED_TARGET))) DeleteLocalObject(oCreature, AI_PC_LOCKED_TARGET); @@ -176,21 +178,27 @@ void ai_DoAssociateCombatRound(object oCreature, object oTarget = OBJECT_INVALID // the polymorph AI script. if(sAI != "ai_coward" && sAI != "ai_a_peaceful") { - if(AI_DEBUG) ai_Debug("0i_actions", "173", "Should we use polymorph? " + - IntToString(GetAppearanceType(oCreature) != ai_GetNormalAppearance(oCreature))); if(AI_DEBUG) { + ai_Debug("0i_actions", "181", "Should we use polymorph? Current: " + + IntToString(GetAppearanceType(oCreature)) + " Normal: " + IntToString(ai_GetNormalAppearance(oCreature))); if(ai_GetIsHidden(oCreature)) { - ai_Debug("0i_actions", "179", "We are hidden!" + + ai_Debug("0i_actions", "185", "We are hidden!" + " Can they see us? " + IntToString(ai_GetNearestIndexThatSeesUs(oCreature))); } } - if(GetAppearanceType(oCreature) != ai_GetNormalAppearance(oCreature)) + if(ai_GetIsHidden(oCreature) && !ai_GetNearestIndexThatSeesUs(oCreature)) sAI = "ai_a_invisible"; + else if(GetAppearanceType(oCreature) != ai_GetNormalAppearance(oCreature)) { sAI = "ai_a_polymorphed"; + if(!GetLocalInt(oCreature, AI_POLYMORPHED)) + { + SetLocalInt(oCreature, AI_POLYMORPHED, TRUE); + ai_ClearTalents(oCreature); + ai_SetCreatureSpecialAbilityTalents(oCreature, FALSE, FALSE, FALSE); + } } - else if(ai_GetIsHidden(oCreature) && !ai_GetNearestIndexThatSeesUs(oCreature)) sAI = "ai_a_invisible"; } if(sAI == "") sAI = "ai_a_default"; if(AI_DEBUG) ai_Debug("0i_actions", "190", "********** " + GetName (oCreature) + " **********"); @@ -211,6 +219,7 @@ void ai_DoAssociateCombatRound(object oCreature, object oTarget = OBJECT_INVALID void ai_StartAssociateCombat(object oAssociate, object oTarget = OBJECT_INVALID) { if(AI_DEBUG) ai_Debug("0i_actions", "217", "---------- " + GetName(oAssociate) + " is starting combat! ----------"); + //ai_SetCreatureTalentsByLevel(oAssociate, FALSE); ai_SetCreatureTalents(oAssociate, FALSE); ai_CheckXPPartyScale(oAssociate); ai_DoAssociateCombatRound(oAssociate, oTarget); @@ -226,11 +235,24 @@ void ai_DoMonsterCombatRound(object oMonster) string sAI = GetLocalString(oMonster, AI_COMBAT_SCRIPT); if(sAI != "ai_coward") { - if(GetAppearanceType(oMonster) != ai_GetNormalAppearance(oMonster)) + if(AI_DEBUG) ai_Debug("0i_actions", "235", "Should we use polymorph? Current: " + + IntToString(GetAppearanceType(oMonster)) + " Normal: " + IntToString(ai_GetNormalAppearance(oMonster))); + if(ai_GetIsHidden(oMonster)) + { + if(AI_DEBUG) ai_Debug("0i_actions", "239", "We are hidden!" + + " Can they see us? " + IntToString(ai_GetNearestIndexThatSeesUs(oMonster))); + } + if(ai_GetIsHidden(oMonster) && !ai_GetNearestIndexThatSeesUs(oMonster)) sAI = "ai_invisible"; + else if(GetAppearanceType(oMonster) != ai_GetNormalAppearance(oMonster)) { sAI = "ai_polymorphed"; + if(!GetLocalInt(oMonster, AI_POLYMORPHED)) + { + SetLocalInt(oMonster, AI_POLYMORPHED, TRUE); + ai_ClearTalents(oMonster); + ai_SetCreatureSpecialAbilityTalents(oMonster, TRUE, FALSE, FALSE); + } } - else if(ai_GetIsHidden(oMonster) && !ai_GetNearestIndexThatSeesUs(oMonster)) sAI = "ai_invisible"; } if(sAI == "") sAI = "ai_default"; if(AI_DEBUG) ai_Debug("0i_actions", "230", "********** " + GetName (oMonster) + " **********"); @@ -277,7 +299,7 @@ int ai_StayClose(object oCreature) if(fPerceptionDistance == 0.0) { fPerceptionDistance = GetLocalFloat(oMaster, AI_ASSOC_PERCEPTION_DISTANCE); - if(fPerceptionDistance == 0.0) fPerceptionDistance = 20.0; + if(fPerceptionDistance == 0.0) fPerceptionDistance = 25.0; } object oTarget = GetLocalObject(oCreature, AI_FOLLOW_TARGET); if(oTarget == OBJECT_INVALID) oTarget = oMaster; @@ -389,9 +411,20 @@ int ai_SearchForHiddenCreature(object oCreature, int bMonster, object oInvisible } } float fPerceptionDistance, fDistance; + // Check to see if the creature is invisible because we cannot hurt them with our weapon. + // If so we need to stay away from them! Maybe add weapon swapping code later? + if(AI_DEBUG) ai_Debug("0i_actions", "415", GetName(oCreature) + "IsWeaponEffective? " + + IntToString(GetIsWeaponEffective(oInvisible)) + " oInvisible: " + GetName(oInvisible)); + /*if(!GetIsWeaponEffective(oInvisible)) + { + ai_HaveCreatureSpeak(oCreature, 20, ":21:47:7:"); + fDistance = GetDistanceBetween(oCreature, oInvisible); + if(fDistance < AI_RANGE_LONG) ActionMoveAwayFromObject(oInvisible, TRUE, AI_RANGE_LONG); + return TRUE; + } */ if(bMonster) { - GetDistanceBetween(oCreature, oInvisible); + fDistance = GetDistanceBetween(oCreature, oInvisible); fPerceptionDistance = GetLocalFloat(GetModule(), AI_RULE_PERCEPTION_DISTANCE); } else @@ -399,7 +432,7 @@ int ai_SearchForHiddenCreature(object oCreature, int bMonster, object oInvisible // We want to use the distance between the PC and target not us. object oMaster = GetMaster(); if(oMaster != OBJECT_INVALID) fDistance = GetDistanceBetween(oMaster, oInvisible); - else GetDistanceBetween(oCreature, oInvisible); + else fDistance = GetDistanceBetween(oCreature, oInvisible); fPerceptionDistance = GetLocalFloat(oCreature, AI_ASSOC_PERCEPTION_DISTANCE); if(fPerceptionDistance == 0.0) fPerceptionDistance = 20.0; } @@ -512,6 +545,9 @@ int ai_MoralCheck(object oCreature) nRaceType == RACIAL_TYPE_UNDEAD || nRaceType == RACIAL_TYPE_CONSTRUCT || ai_GetIsCharacter(oCreature)) return FALSE; + int nAssociateType = GetAssociateType(oCreature); + //if(nAssociateType == ASSOCIATE_TYPE_FAMILIAR || nAssociateType == ASSOCIATE_TYPE_ANIMALCOMPANION || + // nAssociateType == ASSOCIATE_TYPE_SUMMONED) return FALSE; // Moral DC is AI_WOUNDED_MORAL_DC - The number of allies. // or AI_BLOODY_MORAL_DC - number of allies. int nDC; @@ -521,11 +557,11 @@ int ai_MoralCheck(object oCreature) if(nHpPercent <= AI_HEALTH_WOUNDED) { // Debug code to look for multiple moral checks at once by one creature? - if(GetLocalString(GetModule(), AI_RULE_DEBUG_CREATURE) == "") - { - SetLocalString(GetModule(), AI_RULE_DEBUG_CREATURE, GetName(oCreature)); - ai_Debug("0i_actions", "424", GetName(oCreature) + " starting debug mode to test Moral checks!"); - } + //if(GetLocalString(GetModule(), AI_RULE_DEBUG_CREATURE) == "") + //{ + // SetLocalString(GetModule(), AI_RULE_DEBUG_CREATURE, GetName(oCreature)); + // ai_Debug("0i_actions", "424", GetName(oCreature) + " starting debug mode to test Moral checks!"); + //} if(nHpPercent <= AI_HEALTH_BLOODY) nDC = AI_BLOODY_MORAL_DC; else nDC = AI_WOUNDED_MORAL_DC; nDC = nDC - GetLocalInt(oCreature, AI_ALLY_NUMBERS); @@ -681,17 +717,17 @@ void ai_DoPhysicalAttackOnBest(object oCreature, int nInMelee, int bAlwaysAtk = { if(ai_GetAIMode(oCreature, AI_MODE_DEFEND_MASTER)) oTarget = ai_GetLowestCRAttackerOnMaster(oCreature); if(oTarget == OBJECT_INVALID) oTarget = ai_GetNearestFavoredEnemyTarget(oCreature); - if(oTarget == OBJECT_INVALID) oTarget = ai_GetLowestCRTarget(oCreature); + if(oTarget == OBJECT_INVALID) oTarget = ai_GetLowestCRPhysicalTarget(oCreature); } else { if(ai_GetAIMode(oCreature, AI_MODE_DEFEND_MASTER)) oTarget = ai_GetLowestCRAttackerOnMaster(oCreature); if(oTarget == OBJECT_INVALID) oTarget = ai_GetNearestFavoredEnemyTarget(oCreature, AI_RANGE_MELEE); - if(oTarget == OBJECT_INVALID) oTarget = ai_GetLowestCRTarget(oCreature, AI_RANGE_MELEE); + if(oTarget == OBJECT_INVALID) oTarget = ai_GetLowestCRPhysicalTarget(oCreature, AI_RANGE_MELEE); } if(oTarget != OBJECT_INVALID) { - if(ai_TryRapidShotFeat(oCreature, oTarget, nInMelee)) return; + if(ai_TryRangedTalents(oCreature, oTarget, nInMelee)) return; if(AI_DEBUG) ai_Debug("0i_actions", "519", "Do ranged attack against nearest: " + GetName(oTarget) + "!"); ai_ActionAttack(oCreature, AI_LAST_ACTION_RANGED_ATK, oTarget, nInMelee, TRUE); return; @@ -739,17 +775,17 @@ void ai_DoPhysicalAttackOnNearest(object oCreature, int nInMelee, int bAlwaysAtk { if(ai_GetAIMode(oCreature, AI_MODE_DEFEND_MASTER)) oTarget = ai_GetLowestCRAttackerOnMaster(oCreature); if(oTarget == OBJECT_INVALID) oTarget = ai_GetNearestFavoredEnemyTarget(oCreature); - if(oTarget == OBJECT_INVALID) oTarget = ai_GetNearestTarget(oCreature); + if(oTarget == OBJECT_INVALID) oTarget = ai_GetNearestPhysicalTarget(oCreature); } else { if(ai_GetAIMode(oCreature, AI_MODE_DEFEND_MASTER)) oTarget = ai_GetLowestCRAttackerOnMaster(oCreature); if(oTarget == OBJECT_INVALID) oTarget = ai_GetNearestFavoredEnemyTarget(oCreature, AI_RANGE_MELEE); - if(oTarget == OBJECT_INVALID) oTarget = ai_GetNearestTarget(oCreature, AI_RANGE_MELEE); + if(oTarget == OBJECT_INVALID) oTarget = ai_GetNearestPhysicalTarget(oCreature, AI_RANGE_MELEE); } if(oTarget != OBJECT_INVALID) { - if(ai_TryRapidShotFeat(oCreature, oTarget, nInMelee)) return; + if(ai_TryRangedTalents(oCreature, oTarget, nInMelee)) return; if(AI_DEBUG) ai_Debug("0i_actions", "519", "Do ranged attack against nearest: " + GetName(oTarget) + "!"); ai_ActionAttack(oCreature, AI_LAST_ACTION_RANGED_ATK, oTarget, nInMelee, TRUE); return; @@ -796,17 +832,17 @@ void ai_DoPhysicalAttackOnLowestCR(object oCreature, int nInMelee, int bAlwaysAt { if(ai_GetAIMode(oCreature, AI_MODE_DEFEND_MASTER)) oTarget = ai_GetLowestCRAttackerOnMaster(oCreature); if(oTarget == OBJECT_INVALID) oTarget = ai_GetNearestFavoredEnemyTarget(oCreature); - if(oTarget == OBJECT_INVALID) oTarget = ai_GetLowestCRTarget(oCreature); + if(oTarget == OBJECT_INVALID) oTarget = ai_GetLowestCRPhysicalTarget(oCreature); } else { if(ai_GetAIMode(oCreature, AI_MODE_DEFEND_MASTER)) oTarget = ai_GetLowestCRAttackerOnMaster(oCreature); if(oTarget == OBJECT_INVALID) oTarget = ai_GetNearestFavoredEnemyTarget(oCreature, AI_RANGE_MELEE); - if(oTarget == OBJECT_INVALID) oTarget = ai_GetLowestCRTarget(oCreature, AI_RANGE_MELEE); + if(oTarget == OBJECT_INVALID) oTarget = ai_GetLowestCRPhysicalTarget(oCreature, AI_RANGE_MELEE); } if(oTarget != OBJECT_INVALID) { - if(ai_TryRapidShotFeat(oCreature, oTarget, nInMelee)) return; + if(ai_TryRangedTalents(oCreature, oTarget, nInMelee)) return; if(AI_DEBUG) ai_Debug("0i_actions", "559", GetName(OBJECT_SELF) + " does ranged attack on weakest: " + GetName(oTarget) + "!"); ai_ActionAttack(oCreature, AI_LAST_ACTION_RANGED_ATK, oTarget, nInMelee, TRUE); return; @@ -1112,7 +1148,7 @@ void ai_ActionTryHealing(object oCreature, object oTarget) } int ai_TryHealing(object oCreature, object oTarget, int bForce = FALSE) { - if(AI_DEBUG) ai_Debug("0i_actions", "733", "Try healing: oCreature: " + GetName(oCreature) + + if(AI_DEBUG) ai_Debug("0i_actions", "1136", "Try healing: oCreature: " + GetName(oCreature) + " oTarget: " + GetName(oTarget) + " No Party Healing: " + IntToString(ai_GetAIMode(oCreature, AI_MODE_PARTY_HEALING_OFF)) + " No Self Healing: " + IntToString(ai_GetAIMode(oCreature, AI_MODE_SELF_HEALING_OFF)) + " AI_I_AM_BEING_HEALED: " + IntToString(GetLocalInt(oTarget, "AI_I_AM_BEING_HEALED")) + @@ -1133,52 +1169,92 @@ int ai_TryHealing(object oCreature, object oTarget, int bForce = FALSE) oCreature != oTarget) return FALSE; if(ai_GetAIMode(oCreature, AI_MODE_SELF_HEALING_OFF) && oCreature == oTarget) return FALSE; - // Undead don't heal so lets skip this for them, maybe later we can fix this. - if(GetRacialType(oTarget) == RACIAL_TYPE_UNDEAD) return FALSE; int nHpLost = ai_GetPercHPLoss(oTarget); + // If the player is forcing a heal then we always heal. if(bForce && nHpLost < 100) nHpLost = 0; - if(AI_DEBUG) ai_Debug("0i_actions", "743", "nHpLost: " + IntToString(nHpLost) + + if(AI_DEBUG) ai_Debug("0i_actions", "1160", "nHpLost: " + IntToString(nHpLost) + " limit: " + IntToString(ai_GetHealersHpLimit(oTarget, FALSE))); - if(nHpLost >= ai_GetHealersHpLimit(oTarget, FALSE)) + // Check to see if we need poison, disease, or ability drain removed. + int nEffectType; + effect eEffect = GetFirstEffect(oTarget); + while(GetIsEffectValid(eEffect)) { - // Check to see if we need poison, disease, or ability drain removed. - int nEffectType; - effect eEffect = GetFirstEffect(oTarget); - while(GetIsEffectValid(eEffect)) + nEffectType = GetEffectType(eEffect); + if(AI_DEBUG) ai_Debug("0i_actions", "1168", "Checking to cure(31/32/39) nEffectType: " + IntToString(nEffectType)); + if(nEffectType == EFFECT_TYPE_DISEASE) { - nEffectType = GetEffectType(eEffect); - if(AI_DEBUG) ai_Debug("0i_actions", "1094", "Checking to cure(31/32/39) nEffectType: " + IntToString(nEffectType)); - if(nEffectType == EFFECT_TYPE_DISEASE) + if(AI_DEBUG) ai_Debug("0i_actions", "1171", GetName(oTarget) + " is diseased!"); + if(ai_HealSickness(oCreature, oTarget, ai_GetPlayerMaster(oCreature), AI_ALLY_IS_DISEASED, bForce)) return TRUE; + if(oCreature == oTarget) { - if(AI_DEBUG) ai_Debug("0i_actions", "1097", "I am diseased!"); - if(ai_HealSickness(oCreature, oTarget, ai_GetPlayerMaster(oCreature), AI_ALLY_IS_DISEASED, bForce)) return TRUE; - if(oCreature == oTarget) - { - if(!d20()) ai_HaveCreatureSpeak(oCreature, 5, ":43:4:14:15:16:"); - SpeakString(AI_I_AM_DISEASED, TALKVOLUME_SILENT_TALK); - } + if(!Random(20)) ai_HaveCreatureSpeak(oCreature, 5, ":43:4:14:15:16:"); + SpeakString(AI_I_AM_DISEASED, TALKVOLUME_SILENT_TALK); } - else if(nEffectType == EFFECT_TYPE_POISON) + } + else if(nEffectType == EFFECT_TYPE_POISON) + { + if(AI_DEBUG) ai_Debug("0i_actions", "1181", GetName(oTarget) + " is poisoned!"); + if(ai_HealSickness(oCreature, oTarget, ai_GetPlayerMaster(oCreature), AI_ALLY_IS_POISONED, bForce)) return TRUE; + if(oCreature == oTarget) { - if(AI_DEBUG) ai_Debug("0i_actions", "1107", "I am poisoned!"); - if(ai_HealSickness(oCreature, oTarget, ai_GetPlayerMaster(oCreature), AI_ALLY_IS_POISONED, bForce)) return TRUE; - if(oCreature == oTarget) - { - if(!d20()) ai_HaveCreatureSpeak(oCreature, 6, ":43:4:14:15:16:19:"); - SpeakString(AI_I_AM_POISONED, TALKVOLUME_SILENT_TALK); - } + if(!Random(20)) ai_HaveCreatureSpeak(oCreature, 6, ":43:4:14:15:16:19:"); + SpeakString(AI_I_AM_POISONED, TALKVOLUME_SILENT_TALK); } - else if(nEffectType == EFFECT_TYPE_ABILITY_DECREASE) + } + else if(nEffectType == EFFECT_TYPE_ABILITY_DECREASE) + { + if(AI_DEBUG) ai_Debug("0i_actions", "1191", GetName(oTarget) + " is weak!"); + if(ai_HealSickness(oCreature, oTarget, ai_GetPlayerMaster(oCreature), AI_ALLY_IS_WEAK, bForce)) return TRUE; + if(oCreature == oTarget) { - if(AI_DEBUG) ai_Debug("0i_actions", "1117", "I am weak!"); - if(ai_HealSickness(oCreature, oTarget, ai_GetPlayerMaster(oCreature), AI_ALLY_IS_WEAK, bForce)) return TRUE; - if(oCreature == oTarget) - { - if(!d20()) ai_HaveCreatureSpeak(oCreature, 3, ":43:4:5:"); - SpeakString(AI_I_AM_WEAK, TALKVOLUME_SILENT_TALK); - } + if(!Random(20)) ai_HaveCreatureSpeak(oCreature, 3, ":43:4:5:"); + SpeakString(AI_I_AM_WEAK, TALKVOLUME_SILENT_TALK); } - eEffect = GetNextEffect(oTarget); + } + eEffect = GetNextEffect(oTarget); + } + // Everything below here is for healing. + if(nHpLost >= ai_GetHealersHpLimit(oTarget, FALSE)) return FALSE; + // Undead require inflict spells to heal! + object oMaster = ai_GetPlayerMaster(oCreature); + if(GetRacialType(oTarget) == RACIAL_TYPE_UNDEAD) + { + // Do we have no magic on? + if(!ai_GetMagicMode(oCreature, AI_MAGIC_NO_MAGIC)) + { + int nClass, nPosition = 1; + string sMemorized; + while(nPosition <= AI_MAX_CLASSES_PER_CHARACTER) + { + nClass = GetClassByPosition(nPosition, oCreature); + if(AI_DEBUG) ai_Debug("0i_actions", "753", "nClass: " + IntToString(nClass)); + if(nClass == CLASS_TYPE_INVALID) break; + sMemorized = Get2DAString("classes", "MemorizesSpells", nClass); + // If Memorized column is "" then they are not a caster. + if(sMemorized != "") + { + if(sMemorized == "1") + { + if(ai_CastMemorizedInflict(oCreature, oTarget, oMaster, nClass)) + { + SetLocalInt(oTarget, "AI_I_AM_BEING_HEALED", TRUE); + return TRUE; + } + } + else if(ai_CastKnownInflict(oCreature, oTarget, oMaster, nClass)) + { + SetLocalInt(oTarget, "AI_I_AM_BEING_HEALED", TRUE); + return TRUE; + } + } + nPosition++; + } + } + // We can't heal ourselves! Can any of our allies? Lets ask. + if(oCreature == oTarget) + { + SetLocalInt(oCreature, "AI_WOUNDED_SHOUT_LIMIT", GetLocalInt(oCreature, "AI_WOUNDED_SHOUT_LIMIT") + 1); + SpeakString(AI_I_AM_WOUNDED, TALKVOLUME_SILENT_TALK); } return FALSE; } @@ -1192,7 +1268,6 @@ int ai_TryHealing(object oCreature, object oTarget, int bForce = FALSE) return TRUE; } } - object oMaster = ai_GetPlayerMaster(oCreature); // Do we have no magic on? if(!ai_GetMagicMode(oCreature, AI_MAGIC_NO_MAGIC)) { diff --git a/_module/nss/0i_associates.nss b/_module/nss/0i_associates.nss index 2309160..8bc1567 100644 --- a/_module/nss/0i_associates.nss +++ b/_module/nss/0i_associates.nss @@ -52,6 +52,8 @@ void ai_OnRested(object oCreature); // Increments/Decrements the following distance of associates. void ai_FollowIncrement(object oPC, object oAssociate, float fIncrement, string sAssociateType); +// Increments/Decrements the delay when casting each auto buff spell. +void ai_DelaySpellSpeed(object oPC, object oAssociate, float fIncrement, string sAssociateType); // Turns on/off Ranged combat for oAssociate. void ai_Ranged(object oPC, object oAssociate, string sAssociateType); // Turns on/off Ignore enemy associates for oAssociate. @@ -115,7 +117,7 @@ void ai_Philos_SetStealth(object oMaster, object oCreature, string sAssociateTyp // Button action for giving commands to associates. void ai_DoCommand(object oPC, object oAssociate, int nCommand); // Button action to have associate do an action based on the target via OnPlayer Target event. -void ai_Action(object oPC, object oAssociate); +void ai_Action(object oPC, object oAssociate, int bPCAI = FALSE); // Toggles between normal ai script and special tactic ai scripts. void ai_AIScript(object oPC, object oAssociate, string sAssociate, int nToken); // Has the PC select a Trap and then place it on the ground from an associate. @@ -130,6 +132,10 @@ void ai_ChangeCameraView(object oPC, object oAssociate); void ai_OpenInventory(object oAssociate, object oPC); // Executes an installed plugin. void ai_Plugin_Execute(object oPC, string sElem, int bUser = 0); +// Turns on oAssociate AI, Setting all event scripts. +void ai_TurnOn(object oPC, object oAssociate, string sAssociateType); +// Turns off oAssociate AI, Setting all event scripts. +void ai_TurnOff(object oPC, object oAssociate, string sAssociateType); int ai_CanIAttack(object oCreature) { @@ -161,7 +167,7 @@ object ai_GetNearestLockedObject(object oCreature) void ai_FindTheEnemy(object oCreature, object oSpeaker, object oTarget, int bMonster) { if(GetLocalInt(oCreature, AI_AM_I_SEARCHING)) return; - if(oSpeaker == oTarget && d100() < 34) + if(oSpeaker == oTarget && d100() < 16) { // Let them know we heard something in the distance!. if(!ai_GetAIMode(oCreature, AI_MODE_DO_NOT_SPEAK)) @@ -232,7 +238,7 @@ void ai_FindTheEnemy(object oCreature, object oSpeaker, object oTarget, int bMon if(AI_DEBUG) ai_Debug("0i_associates", "176", "Moving and searching for " + GetName(oTarget)); SetActionMode(oCreature, ACTION_MODE_DETECT, TRUE); ActionMoveToLocation(GetLocation(oTarget), FALSE); - //ActionMoveToObject(oTarget, FALSE, AI_RANGE_MELEE); + //ActionMoveToObject(oTarget, FALSE, AI_RANGE_MELEE); AssignCommand(oCreature, ActionDoCommand(DeleteLocalInt(oCreature, AI_AM_I_SEARCHING))); return; } @@ -519,6 +525,24 @@ void ai_SelectAssociateCommand(object oCreature, object oCommander, int nCommand ai_FireHenchman (GetPCSpeaker(), oCreature); PlayVoiceChat (VOICE_CHAT_GOODBYE, oCreature); } + else if(AI_PATROL_AHEAD_RADIAL_OPTION) + { + if(ai_GetAIMode(oCreature, AI_MODE_SCOUT_AHEAD)) + { + ai_ClearCreatureActions(); + ai_HaveCreatureSpeak(oCreature, 6, ":29:35:46:10"); + ai_SetAIMode(oCreature, AI_MODE_SCOUT_AHEAD, FALSE); + ai_SendMessages(GetName(oCreature) + " has stopped patrolling ahead.", AI_COLOR_YELLOW, oMaster); + } + else + { + ai_ClearCreatureActions(); + ai_HaveCreatureSpeak(oCreature, 6, ":29:35:46:22:"); + ai_SetAIMode(oCreature, AI_MODE_SCOUT_AHEAD, TRUE); + ai_SendMessages(GetName(oCreature) + " is now patrolling ahead.", AI_COLOR_YELLOW, oMaster); + ai_ScoutAhead(oCreature); + } + } } } } @@ -769,7 +793,7 @@ void ai_AssociateEvaluateNewThreat(object oCreature, object oLastPerceived, stri if(sPerception == AI_I_SEE_AN_ENEMY || GetObjectSeen(oLastPerceived, oCreature)) { // We are not in combat and we see the enemy so alert our allies! - ai_HaveCreatureSpeak(oCreature, 5, ":0:1:2:3:6:"); + ai_HaveCreatureSpeak(oCreature, 10, ":0:1:2:3:6:"); SetLocalObject (oCreature, AI_MY_TARGET, oLastPerceived); SpeakString(sPerception, TALKVOLUME_SILENT_TALK); ai_StartAssociateCombat(oCreature); @@ -832,10 +856,10 @@ void ai_MonsterEvaluateNewThreat(object oCreature, object oLastPerceived, string if(d100() < 34) { // We are not in combat so alert our allies! - ai_HaveCreatureSpeak(oCreature, 5, ":0:1:2:3:6:"); + ai_HaveCreatureSpeak(oCreature, 10, ":0:1:2:3:6:"); } SetLocalObject(oCreature, AI_MY_TARGET, oLastPerceived); - SpeakString(sPerception, TALKVOLUME_SILENT_TALK); + SpeakString(AI_I_SEE_AN_ENEMY, TALKVOLUME_SILENT_TALK); ai_StartMonsterCombat(oCreature); } else ai_FindTheEnemy(oCreature, oLastPerceived, oLastPerceived, TRUE); @@ -919,6 +943,23 @@ void ai_FollowIncrement(object oPC, object oAssociate, float fIncrement, string ai_UpdateToolTipUI(oPC, sAssociateType + AI_COMMAND_NUI, sAssociateType + AI_WIDGET_NUI, "btn_follow_target_tooltip", " " + GetName(oAssociate) + " following " + sTarget + " [" + sRange + " meters]"); } } +void ai_DelaySpellSpeed(object oPC, object oAssociate, float fIncrement, string sAssociateType) +{ + float fAdjustment = GetLocalFloat(oAssociate, AI_DELAY_BUFF_CASTING) + fIncrement; + if(fAdjustment > 6.0) fAdjustment = 6.0; + else if(fAdjustment < 0.1) fAdjustment = 0.1; + SetLocalFloat(oAssociate, AI_DELAY_BUFF_CASTING, fAdjustment); + json jAIData = ai_GetAssociateDbJson(oPC, sAssociateType, "aidata"); + jAIData = JsonArraySet(jAIData, 11, JsonFloat(fAdjustment)); + ai_SetAssociateDbJson(oPC, sAssociateType, "aidata", jAIData); + string sDelay = FloatToString(fAdjustment, 0, 1); + ai_UpdateToolTipUI(oPC, sAssociateType + AI_COMMAND_NUI, sAssociateType + AI_WIDGET_NUI, + "btn_buff_long_tooltip", " Buff the party with long duration spells. Cast speed [" + sDelay + "]"); + ai_UpdateToolTipUI(oPC, sAssociateType + AI_COMMAND_NUI, sAssociateType + AI_WIDGET_NUI, + "btn_buff_short_tooltip", " Buff the party with short duration spells. Cast speed [" + sDelay + "]"); + ai_UpdateToolTipUI(oPC, sAssociateType + AI_COMMAND_NUI, sAssociateType + AI_WIDGET_NUI, + "btn_buff_all_tooltip", " Buff the party with all spells. Cast speed [" + sDelay + "]"); +} void ai_Ranged(object oPC, object oAssociate, string sAssociateType) { //ai_ClearCreatureActions(); @@ -1903,18 +1944,20 @@ void ai_DoCommand(object oPC, object oAssociate, int nCommand) } } } -void ai_Action(object oPC, object oAssociate) +void ai_Action(object oPC, object oAssociate, int bPCAI = FALSE) { if(oPC == oAssociate) { - DeleteLocalObject(oPC, "NW_ASSOCIATE_COMMAND"); SetLocalString(oPC, AI_TARGET_MODE, "ASSOCIATE_ACTION_ALL"); ai_SendMessages("Select an action for the party.", AI_COLOR_YELLOW, oPC); } else { SetLocalObject(oPC, AI_TARGET_ASSOCIATE, oAssociate); + SetLocalObject(oPC, AI_TARGET_MODE_ASSOCIATE, oAssociate); SetLocalString(oPC, AI_TARGET_MODE, "ASSOCIATE_ACTION"); + SetLocalInt(oPC, AI_TARGET_MODE_ON, TRUE); + if(!GetLocalInt(GetModule(), AI_USING_PRC) && bPCAI) ai_TurnOn(oPC, oPC, "pc"); ai_SendMessages("Select an action for " + GetName(oAssociate) + ".", AI_COLOR_YELLOW, oPC); } EnterTargetingMode(oPC, OBJECT_TYPE_ALL, MOUSECURSOR_ACTION, MOUSECURSOR_NOWALK); @@ -2139,6 +2182,7 @@ void ai_ChangeCameraView(object oPC, object oAssociate) { SetLocalObject(oPC, "AI_CAMERA_ON_ASSOCIATE", oAssociate); AttachCamera(oPC, oAssociate); + if(!ai_GetIsCharacter(oAssociate)) ai_Action(oPC, oAssociate, TRUE); } } void ai_SelectCameraView(object oPC) @@ -2190,3 +2234,47 @@ void ai_Plugin_Execute(object oPC, string sElem, int bUser = 0) ExecuteScript(sScript, oPC); } } +void ai_TurnOn(object oPC, object oTarget, string sAssociateType) +{ + ai_UpdateToolTipUI(oPC, sAssociateType + AI_NUI, sAssociateType + AI_WIDGET_NUI, "btn_ai_tooltip", " AI On"); + ai_SendMessages("AI turned on for " + GetName(oTarget) + ".", AI_COLOR_YELLOW, oPC); + SetEventScript(oTarget, EVENT_SCRIPT_CREATURE_ON_HEARTBEAT, "xx_pc_1_hb"); + SetEventScript(oTarget, EVENT_SCRIPT_CREATURE_ON_NOTICE, "xx_pc_2_percept"); + SetEventScript(oTarget, EVENT_SCRIPT_CREATURE_ON_END_COMBATROUND, "xx_pc_3_endround"); + SetEventScript(oTarget, EVENT_SCRIPT_CREATURE_ON_DIALOGUE, "xx_pc_4_convers"); + SetEventScript(oTarget, EVENT_SCRIPT_CREATURE_ON_MELEE_ATTACKED, "xx_pc_5_phyatked"); + SetEventScript(oTarget, EVENT_SCRIPT_CREATURE_ON_DAMAGED, "xx_pc_6_damaged"); + //SetEventScript(oTarget, EVENT_SCRIPT_CREATURE_ON_DEATH, ""); + SetEventScript(oTarget, EVENT_SCRIPT_CREATURE_ON_DISTURBED, "xx_pc_8_disturb"); + //SetEventScript(oTarget, EVENT_SCRIPT_CREATURE_ON_SPAWN_IN, ""); + //SetEventScript(oTarget, EVENT_SCRIPT_CREATURE_ON_RESTED, ""); + SetEventScript(oTarget, EVENT_SCRIPT_CREATURE_ON_SPELLCASTAT, "xx_pc_b_castat"); + SetEventScript(oTarget, EVENT_SCRIPT_CREATURE_ON_BLOCKED_BY_DOOR, "xx_pc_e_blocked"); + //SetEventScript(oTarget, EVENT_SCRIPT_CREATURE_ON_USER_DEFINED_EVENT, ""); + // This sets the script for the PC to run AI based on class. + ai_SetAssociateAIScript(oTarget, FALSE); + // Set so PC can hear associates talking in combat. + ai_SetListeningPatterns(oTarget); +} +void ai_TurnOff(object oPC, object oAssociate, string sAssociateType) +{ + ai_UpdateToolTipUI(oPC, sAssociateType + AI_NUI, sAssociateType + AI_WIDGET_NUI, "btn_ai_tooltip", " AI Off"); + ai_SendMessages("AI Turned off for " + GetName(oAssociate) + ".", AI_COLOR_YELLOW, oPC); + SetEventScript(oAssociate, EVENT_SCRIPT_CREATURE_ON_HEARTBEAT, ""); + SetEventScript(oAssociate, EVENT_SCRIPT_CREATURE_ON_NOTICE, ""); + SetEventScript(oAssociate, EVENT_SCRIPT_CREATURE_ON_END_COMBATROUND, ""); + SetEventScript(oAssociate, EVENT_SCRIPT_CREATURE_ON_DIALOGUE, ""); + SetEventScript(oAssociate, EVENT_SCRIPT_CREATURE_ON_MELEE_ATTACKED, ""); + SetEventScript(oAssociate, EVENT_SCRIPT_CREATURE_ON_DAMAGED, ""); + //SetEventScript(oAssociate, EVENT_SCRIPT_CREATURE_ON_DEATH, ""); + SetEventScript(oAssociate, EVENT_SCRIPT_CREATURE_ON_DISTURBED, ""); + //SetEventScript(oAssociate, EVENT_SCRIPT_CREATURE_ON_SPAWN_IN, ""); + //SetEventScript(oAssociate, EVENT_SCRIPT_CREATURE_ON_RESTED, ""); + SetEventScript(oAssociate, EVENT_SCRIPT_CREATURE_ON_SPELLCASTAT, ""); + SetEventScript(oAssociate, EVENT_SCRIPT_CREATURE_ON_BLOCKED_BY_DOOR, ""); + //SetEventScript(oAssociate, EVENT_SCRIPT_CREATURE_ON_USER_DEFINED_EVENT, ""); + DeleteLocalInt(oAssociate, "AI_I_AM_BEING_HEALED"); + DeleteLocalString(oAssociate, "AIScript"); + ai_ClearCreatureActions(); +} + diff --git a/_module/nss/0i_combat.nss b/_module/nss/0i_combat.nss index 6c40eb1..1133627 100644 --- a/_module/nss/0i_combat.nss +++ b/_module/nss/0i_combat.nss @@ -39,6 +39,7 @@ struct stTarget //****************************************************************************** //************ GET TARGETS USING THE OBJECT SEARCH FUNCTIONS ******************* //****************************************************************************** + // Returns the nearest enemy that is not disabled from oCreature. // You may pass in any of the CREATURE_TYPE_* constants // used in GetNearestCreature as nCType1 & nCType2, with @@ -64,11 +65,14 @@ object ai_GetLowestCRAttackerOnMaster(object oCreature); //****************************************************************************** //******************** SET/CLEAR COMBAT STATE FUNCTIONS ************************ //****************************************************************************** + // Sets oCreatures's combat state by setting variables for AI_ALLIES and AI_ENEMIES. // Returns the nearest visible enemy. object ai_SetCombatState(object oCreature); // Clears all variables that were define for the current round for oCreature. void ai_ClearCombatState(object oCreature); +// Clears just the Talent variables so we can recalculate the Talents. +void ai_ClearTalents(object oCreature); //****************************************************************************** //*************** GET TARGETS USING COMBAT STATE FUNCTIONS ********************* @@ -76,51 +80,187 @@ void ai_ClearCombatState(object oCreature); // These functions will find a target or an index to a target based on the // combat state variables created by the function ai_SetCombatState. +// ******************************** Target Checks ****************************** +// ** Used to get creatures within fMaxRange as a target. ** +// ** These checks that do basic checks to find a creature. ** +// ** Used mostly in spell checks. ** +// ***************************************************************************** // Returns the Index of the nearest creature seen within fMaxRange in the combat state. // If no creature is found then it will return an index of 0. // sTargetType is either AI_ENEMY or AI_ALLY. -int ai_GetNearestIndex(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY, int bAlwaysAtk = TRUE); +int ai_GetNearestIndex(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY); // Returns the nearest creature seen within fMaxRange in the combat state. // Returns OBJECT_INVALID if no creature is found. // sTargetType is either AI_ENEMY or AI_ALLY. -object ai_GetNearestTarget(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY, int bAlwaysAtk = TRUE); +object ai_GetNearestTarget(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY); // Returns the index of the nearest creature seen with the lowest combat rating // within fMaxRange in the combat state. // If no creature is found then it will return an index of 0. // sTargetType is either AI_ENEMY or AI_ALLY. -int ai_GetLowestCRIndex(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY, int bAlwaysAtk = TRUE); +int ai_GetLowestCRIndex(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY); // Returns the nearest creature seen with the lowest combat rating within fMaxRange // in the combat state. // Returns OBJECT_INVALID if no creature is found. // sTargetType is either AI_ENEMY or AI_ALLY. -object ai_GetLowestCRTarget(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY, int bAlwaysAtk = TRUE); +object ai_GetLowestCRTarget(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY); // Returns the index of the nearest creature seen with the highest combat rating // within fMaxRange in the combat state. // If no creature is found then it will return an index of 0. // sTargetType is either AI_ENEMY or AI_ALLY. -int ai_GetHighestCRIndex(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY, int bAlwaysAtk = TRUE); +int ai_GetHighestCRIndex(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY); // Returns the nearest creature seen with the highest combat rating within fMaxRange // in the combat state. // Returns OBJECT_INVALID if no creature is found. // sTargetType is either AI_ENEMY or AI_ALLY. -object ai_GetHighestCRTarget(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY, int bAlwaysAtk = TRUE); -// Returns the index of the creature seen with the lowest enemies to oCreature that -// they are in melee with minus the number of allies to the caller they are in -// melee with within fMaxRange in the combat state. +object ai_GetHighestCRTarget(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY); + +// *************************** Not in an AOE Target Checks ********************* +// ** Used to get creatures within fMaxRange as a target. ** +// ** These checks that do basic checks to find a creature that is not in a ** +// ** harmful AOE. Used in spell checks to target unaffected cratures first. ** +// ***************************************************************************** +// Returns the index of the nearest creature seen that is busy attacking an ally +// within fMaxRange in the combat state. +// If none is found then it will return 0. +int ai_GetNearestIndexNotInAOE(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY); +// Returns the nearest combat creature seen within fMaxRange in the combat state. +// Returns OBJECT_INVALID if no creature is found. +// sTargetType is either AI_ENEMY or AI_ALLY. +object ai_GetNearestTargetNotInAOE(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY); +// Returns the index of the nearest creature seen with the lowest combat rating +// that is not in a dangerous area of effect within fMaxRange in the combat state. // If no creature is found then it will return an index of 0. // sTargetType is either AI_ENEMY or AI_ALLY. -int ai_GetLowestMeleeIndex(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY); -// Returns the index of the creature seen with the most enemies to the caller that -// they are in melee with minus the number of allies to oCreature they are in -// melee with within fMaxRange in the combat state. +int ai_GetLowestCRIndexNotInAOE(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY); +// Returns the lowest combat creature seen within fMaxRange in the combat state. +// Returns OBJECT_INVALID if no creature is found. +// sTargetType is either AI_ENEMY or AI_ALLY. +object ai_GetLowestTargetNotInAOE(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY); +// Returns the index of the nearest creature seen with the highest combat rating +// that is not in a dangerous area of effect within fMaxRange in the combat state. // If no creature is found then it will return an index of 0. // sTargetType is either AI_ENEMY or AI_ALLY. -int ai_GetHighestMeleeIndex(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY); +int ai_GetHighestCRIndexNotInAOE(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY); +// Returns the highest combat creature seen within fMaxRange in the combat state. +// Returns OBJECT_INVALID if no creature is found. +// sTargetType is either AI_ENEMY or AI_ALLY. +object ai_GetHighestTargetNotInAOE(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY); + +// ******************************** Physical Target Checks ********************* +// ** Used in melee checks to make sure the attacker can damage oCreature ** +// ** as well as stay within range of their master. ** +// ***************************************************************************** +// Returns the Index of the nearest creature seen within fMaxRange in the combat state. +// This also checks if the caller can do damage to oCreature with current weapon. +// If no creature is found then it will return an index of 0. +// sTargetType is either AI_ENEMY or AI_ALLY. +int ai_GetNearestPhysicalIndex(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY, int bAlwaysAtk = TRUE); +// Returns the nearest creature seen within fMaxRange in the combat state. +// This also checks if the caller can do damage to oCreature with current weapon. +// Returns OBJECT_INVALID if no creature is found. +// sTargetType is either AI_ENEMY or AI_ALLY. +object ai_GetNearestPhysicalTarget(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY, int bAlwaysAtk = TRUE); +// Returns the index of the nearest creature seen with the lowest combat rating +// within fMaxRange in the combat state. +// This also checks if the caller can do damage to oCreature with current weapon. +// If no creature is found then it will return an index of 0. +// sTargetType is either AI_ENEMY or AI_ALLY. +int ai_GetLowestCRPhysicalIndex(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY, int bAlwaysAtk = TRUE); +// Returns the nearest creature seen with the lowest combat rating within fMaxRange +// in the combat state. +// This also checks if the caller can do damage to oCreature with current weapon. +// Returns OBJECT_INVALID if no creature is found. +// sTargetType is either AI_ENEMY or AI_ALLY. +object ai_GetLowestCRPhysicalTarget(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY, int bAlwaysAtk = TRUE); +// Returns the index of the nearest creature seen with the highest combat rating +// within fMaxRange in the combat state. +// This also checks if the caller can do damage to oCreature with current weapon. +// If no creature is found then it will return an index of 0. +// sTargetType is either AI_ENEMY or AI_ALLY. +int ai_GetHighestCRPhysicalIndex(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY, int bAlwaysAtk = TRUE); +// Returns the nearest creature seen with the highest combat rating within fMaxRange +// in the combat state. +// This also checks if the caller can do damage to oCreature with current weapon. +// Returns OBJECT_INVALID if no creature is found. +// sTargetType is either AI_ENEMY or AI_ALLY. +object ai_GetHighestCRPhysicalTarget(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY, int bAlwaysAtk = TRUE); + +// *************************** Not in an AOE Target Checks ********************* +// ** Used to get creatures within fMaxRange as a target. ** +// ** These checks that do basic checks to find a creature that is not in a ** +// ** harmful AOE. Used in spell checks to target unaffected cratures first. ** +// ***************************************************************************** +// Returns the index of the nearest creature seen that is busy attacking an ally +// within fMaxRange in the combat state. +// This also checks if the caller can do damage to oCreature with current weapon. +// If none is found then it will return 0. +int ai_GetNearestPhysicalIndexNotInAOE(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY, int bAlwaysAtk = TRUE); +// Returns the nearest combat creature seen within fMaxRange in the combat state. +// This also checks if the caller can do damage to oCreature with current weapon. +// Returns OBJECT_INVALID if no creature is found. +// sTargetType is either AI_ENEMY or AI_ALLY. +object ai_GetNearestPhysicalTargetNotInAOE(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY, int bAlwaysAtk = TRUE); +// Returns the index of the nearest creature seen with the lowest combat rating +// that is not in a dangerous area of effect within fMaxRange in the combat state. +// This also checks if the caller can do damage to oCreature with current weapon. +// If no creature is found then it will return an index of 0. +// sTargetType is either AI_ENEMY or AI_ALLY. +int ai_GetLowestCRPhysicalIndexNotInAOE(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY, int bAlwaysAtk = TRUE); +// Returns the lowest combat creature seen within fMaxRange in the combat state. +// This also checks if the caller can do damage to oCreature with current weapon. +// Returns OBJECT_INVALID if no creature is found. +// sTargetType is either AI_ENEMY or AI_ALLY. +object ai_GetLowestPhysicalTargetNotInAOE(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY, int bAlwaysAtk = TRUE); +// Returns the index of the nearest creature seen with the highest combat rating +// that is not in a dangerous area of effect within fMaxRange in the combat state. +// This also checks if the caller can do damage to oCreature with current weapon. +// If no creature is found then it will return an index of 0. +// sTargetType is either AI_ENEMY or AI_ALLY. +int ai_GetHighestCRPhysicalIndexNotInAOE(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY, int bAlwaysAtk = TRUE); +// Returns the highest combat creature seen within fMaxRange in the combat state. +// This also checks if the caller can do damage to oCreature with current weapon. +// Returns OBJECT_INVALID if no creature is found. +// sTargetType is either AI_ENEMY or AI_ALLY. +object ai_GetHighestCRPhysicalTargetNotInAOE(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY, int bAlwaysAtk = TRUE); + +// ******************************** Group Target Checks ************************ +// ** These get the largest group of enemies in 5' with a minimal number of ** +// ** allies within fMaxRange. Used for AOE spells. ** +// ***************************************************************************** +// Returns the index of the creature seen with the lowest enemies to oCreature +// that are in a group minus the number of allies in that group within +// fMaxRange in the combat state. +// If no creature is found then it will return an index of 0. +// sTargetType is either AI_ENEMY or AI_ALLY. +int ai_GetLowestGroupIndex(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY); +// Returns the index of the creature seen with the most enemies to the caller +// that are in a group minus the number of allies in that group within +// fMaxRange in the combat state. +// If no creature is found then it will return an index of 0. +// sTargetType is either AI_ENEMY or AI_ALLY. +int ai_GetHighestGroupIndex(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY); // Returns a creature of sTargetType where they have the least number of // allies and the most number of enemies within fMaxRange in the combat state. // Returns OBJECT_INVALID if there is not a good creature to select. // sTargetType is either AI_ENEMY, or AI_ALLY. object ai_GetGroupedTarget(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY); +// Returns the index of the creature seen with the most enemies to oCreature that +// they are in melee with minus the number of allies to oCreature they are in +// melee with that is not in a dangerous area of effect within fMaxRange in the combat state. +// If no creature is found then it will return an index of 0. +// sTargetType is either AI_ENEMY or AI_ALLY. +int ai_GetHighestGroupIndexNotInAOE(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY); +// Returns a creature of sTargetType where they have the least number of +// allies and the most number of enemies within fMaxRange that are not in a +// dangerous area of effect in the combat state. +// Returns OBJECT_INVALID if there is not a good creature to select. +// sTargetType is either AI_ENEMY, or AI_ALLY. +object ai_GetGroupTargetNotInAOE(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY); + +// ***************************** Specific Target Checks ************************ +// ** Used in melee checks to make sure the attacker can damage oCreature ** +// ** as well as stay within range of their master. ** +// ***************************************************************************** // Returns the index of the nearest creature with the least % of hitpoints within // fMaxRange in the combat state. // If no creature is found then it will return an index of 0. @@ -155,44 +295,6 @@ object ai_GetSpellTargetBasedOnSaves(object oCreature, int nSpell, float fMaxRan // within fMaxRange in the combat state. // If none is found then it will return 0. int ai_GetSneakAttackIndex(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, int bAlwaysAtk = TRUE); -// Returns the index of the nearest creature seen that is busy attacking an ally -// within fMaxRange in the combat state. -// If none is found then it will return 0. -int ai_GetNearestIndexNotInAOE(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY, int bAlwaysAtk = TRUE); -// Returns the nearest combat creature seen within fMaxRange in the combat state. -// Returns OBJECT_INVALID if no creature is found. -// sTargetType is either AI_ENEMY or AI_ALLY. -object ai_GetNearestTargetNotInAOE(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY, int bAlwaysAtk = TRUE); -// Returns the index of the nearest creature seen with the lowest combat rating -// that is not in a dangerous area of effect within fMaxRange in the combat state. -// If no creature is found then it will return an index of 0. -// sTargetType is either AI_ENEMY or AI_ALLY. -int ai_GetLowestCRIndexNotInAOE(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY, int bAlwaysAtk = TRUE); -// Returns the lowest combat creature seen within fMaxRange in the combat state. -// Returns OBJECT_INVALID if no creature is found. -// sTargetType is either AI_ENEMY or AI_ALLY. -object ai_GetLowestTargetNotInAOE(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY, int bAlwaysAtk = TRUE); -// Returns the index of the nearest creature seen with the highest combat rating -// that is not in a dangerous area of effect within fMaxRange in the combat state. -// If no creature is found then it will return an index of 0. -// sTargetType is either AI_ENEMY or AI_ALLY. -int ai_GetHighestCRIndexNotInAOE(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY, int bAlwaysAtk = TRUE); -// Returns the highest combat creature seen within fMaxRange in the combat state. -// Returns OBJECT_INVALID if no creature is found. -// sTargetType is either AI_ENEMY or AI_ALLY. -object ai_GetHighestTargetNotInAOE(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY, int bAlwaysAtk = TRUE); -// Returns the index of the creature seen with the most enemies to oCreature that -// they are in melee with minus the number of allies to oCreature they are in -// melee with that is not in a dangerous area of effect within fMaxRange in the combat state. -// If no creature is found then it will return an index of 0. -// sTargetType is either AI_ENEMY or AI_ALLY. -int ai_GetHighestMeleeIndexNotInAOE(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY); -// Returns a creature of sTargetType where they have the least number of -// allies and the most number of enemies within fMaxRange that are not in a -// dangerous area of effect in the combat state. -// Returns OBJECT_INVALID if there is not a good creature to select. -// sTargetType is either AI_ENEMY, or AI_ALLY. -object ai_GetGroupedTargetNotInAOE(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY); // Returns the nearest creature seen of nClassType within fMaxRange in the combat state. // Returns OBJECT_INVALID if no creature is found. // sTargetType is either AI_ENEMY or AI_ALLY. @@ -376,6 +478,20 @@ int ai_CanIUseRangedWeapon(object oCreature, int nInMelee); // and -1 if the action is canceled. // Checks current combat state to see if oCreature needs to move before using an action. int ai_CheckCombatPosition(object oCreature, object oTarget, int nInMelee, int nAction, int nBaseItemType = 0); +//:: [PRC8] Calculates total Shield AC bonuses from all sources +int ai_GetTotalShieldACBonus(object oCreature); +//:: [PRC8] Helper fucntion for CanIGrapple() +int GetSpecialGrappleSizeMod(int nSize); +//:: [PRC8] Returns TRUE if oTarget is a good candidate for Tripping +int ai_CanITrip(object oCreature, object oTarget); +//:: [PRC8] Returns TRUE if oTarget is a good candidate for Grappling +int ai_CanIGrapple(object oCreature, object oTarget); +//:: [PRC8] Returns TRUE if oTarget is a good candidate for Awesome Blow +int ai_CanIAwesomeBlow(object oCreature, object oTarget); +//:: [PRC8] Returns TRUE if oTarget is a good candidate for Overrun +int ai_CanIOverrun(object oCreature, object oTarget); +//:: [PRC8] Returns TRUE if oTarget is a good candidate for Bullrush +int ai_CanIBullrush(object oCreature, object oTarget); //****************************************************************************** //************ GET TARGETS USING THE OBJECT SEARCH FUNCTIONS ******************* @@ -458,7 +574,7 @@ int ai_GetRacialTypeCount(object oCreature, int nRacial_Type, float fDistance = object ai_GetLowestCRAttackerOnMaster(object oCreature) { object oTarget = OBJECT_INVALID, oMaster = GetMaster(oCreature); - if(AI_DEBUG) ai_Debug("0i_combat", "419", "Checking for weakest attacker on " + GetName(oMaster)); + if(AI_DEBUG) ai_Debug("0i_combat", "577", "Checking for weakest attacker on " + GetName(oMaster)); int nEnemyCombatRating, nWeakestCombatRating, nCntr = 1; float fNearest = AI_RANGE_MELEE + 1.0f; // Get the weakest opponent in melee with our master. @@ -467,7 +583,7 @@ object ai_GetLowestCRAttackerOnMaster(object oCreature) while (oEnemy != OBJECT_INVALID && fDistance <= AI_RANGE_MELEE) { nEnemyCombatRating = ai_GetMyCombatRating(oEnemy); - if(AI_DEBUG) ai_Debug("0i_combat", "428", GetName(oEnemy) + " nECR: " + IntToString(nEnemyCombatRating)); + if(AI_DEBUG) ai_Debug("0i_combat", "586", GetName(oEnemy) + " nECR: " + IntToString(nEnemyCombatRating)); if (nEnemyCombatRating < nWeakestCombatRating || nEnemyCombatRating == nWeakestCombatRating && fDistance < fNearest) { @@ -478,7 +594,13 @@ object ai_GetLowestCRAttackerOnMaster(object oCreature) oEnemy = ai_GetNearestEnemy(oMaster, ++nCntr, 7, 7); } // No targets in melee with our master, lets see if there is a ranged attacker. - if (oTarget == OBJECT_INVALID) oTarget = GetLastHostileActor(oMaster); + if (oTarget == OBJECT_INVALID) + { + oTarget = GetLastHostileActor(oMaster); + // Sometimes things happen and our own associates may hurt the player too! + if(ai_GetTopMaster(oTarget) == oMaster) oTarget = OBJECT_INVALID; + } + if(AI_DEBUG) ai_Debug("0i_combat", "598", "Attacking master: " + GetName(oTarget)); return oTarget; } @@ -801,8 +923,31 @@ void ai_ClearCombatState(object oCreature) DeleteLocalInt(oCreature, sIPImmuneVarname); DeleteLocalInt(oCreature, sIPResistVarname); DeleteLocalInt(oCreature, sIPReducedVarname); + DeleteLocalJson(oCreature, AI_TALENT_IMMUNITY); ai_EndCombatRound(oCreature); } +void ai_ClearTalents(object oCreature) +{ + // Remove Talent variables. + DeleteLocalJson(oCreature, AI_TALENT_CURE); + DeleteLocalJson(oCreature, AI_TALENT_HEALING); + DeleteLocalJson(oCreature, AI_TALENT_ENHANCEMENT); + DeleteLocalJson(oCreature, AI_TALENT_PROTECTION); + DeleteLocalJson(oCreature, AI_TALENT_SUMMON); + DeleteLocalJson(oCreature, AI_TALENT_DISCRIMINANT_AOE); + DeleteLocalJson(oCreature, AI_TALENT_INDISCRIMINANT_AOE); + DeleteLocalJson(oCreature, AI_TALENT_RANGED); + DeleteLocalJson(oCreature, AI_TALENT_TOUCH); + DeleteLocalInt(oCreature, AI_MAX_TALENT + AI_TALENT_CURE); + DeleteLocalInt(oCreature, AI_MAX_TALENT + AI_TALENT_HEALING); + DeleteLocalInt(oCreature, AI_MAX_TALENT + AI_TALENT_ENHANCEMENT); + DeleteLocalInt(oCreature, AI_MAX_TALENT + AI_TALENT_PROTECTION); + DeleteLocalInt(oCreature, AI_MAX_TALENT + AI_TALENT_SUMMON); + DeleteLocalInt(oCreature, AI_MAX_TALENT + AI_TALENT_DISCRIMINANT_AOE); + DeleteLocalInt(oCreature, AI_MAX_TALENT + AI_TALENT_INDISCRIMINANT_AOE); + DeleteLocalInt(oCreature, AI_MAX_TALENT + AI_TALENT_RANGED); + DeleteLocalInt(oCreature, AI_MAX_TALENT + AI_TALENT_TOUCH); +} //****************************************************************************** //*********************** GET TARGETS INTERNAL FUNCTIONS *********************** //****************************************************************************** @@ -810,7 +955,7 @@ void ai_ClearCombatState(object oCreature) int ai_TargetIsInRangeofCreature(object oCreature, string sTargetType, string sCounter, float fMaxRange) { - if(AI_DEBUG) ai_Debug("0i_combat", "796", "fMaxRange: " + FloatToString(fMaxRange, 0, 2) + + if(AI_DEBUG) ai_Debug("0i_combat", "952", "fMaxRange: " + FloatToString(fMaxRange, 0, 2) + " fTargetRange: " + FloatToString(GetLocalFloat(oCreature, sTargetType + "_RANGE" + sCounter), 0, 2)); return fMaxRange >= GetLocalFloat(oCreature, sTargetType + "_RANGE" + sCounter); } @@ -821,13 +966,13 @@ int ai_TargetIsInRangeofMaster(object oCreature, object oTarget) float fMaxRange = GetLocalFloat(oCreature, AI_ASSOC_PERCEPTION_DISTANCE); if(fMaxRange == 0.0) fMaxRange = 20.0; float fTargetRangefromMaster = GetDistanceBetween(oTarget, oMaster); - if(AI_DEBUG) ai_Debug("0i_combat", "807", "fMaxRangefromMaster: " + FloatToString(fMaxRange, 0, 2) + + if(AI_DEBUG) ai_Debug("0i_combat", "963", "fMaxRangefromMaster: " + FloatToString(fMaxRange, 0, 2) + " fTargetRangefromMaster: " + FloatToString(fTargetRangefromMaster, 0, 2)); return fMaxRange >= fTargetRangefromMaster; } struct stTarget ai_CheckForNearestTarget(object oCreature, struct stTarget sTarget, int nIndex, string sIndex) { - if(AI_DEBUG) ai_Debug("0i_combat", "817", "Getting nearest index: " + sIndex + + if(AI_DEBUG) ai_Debug("0i_combat", "969", "Getting nearest index: " + sIndex + " fRange: " + FloatToString(GetLocalFloat(oCreature, sTarget.sTargetType + "_RANGE" + sIndex), 0, 2) + " fNearestRange: " + FloatToString(sTarget.fNearestRange, 0, 2) + " fNearestSecondaryRange: " + FloatToString(sTarget.fNearestSecondaryRange, 0, 2)); @@ -850,7 +995,7 @@ struct stTarget ai_CheckForNearestTarget(object oCreature, struct stTarget sTarg } struct stTarget ai_CheckForLowestValueTarget(object oCreature, struct stTarget sTarget, int nIndex, string sIndex) { - if(AI_DEBUG) ai_Debug("0i_combat", "835", "Getting lowest value index: " + sIndex + + if(AI_DEBUG) ai_Debug("0i_combat", "992", "Getting lowest value index: " + sIndex + " fRange: " + FloatToString(GetLocalFloat(oCreature, sTarget.sTargetType + "_RANGE" + sIndex), 0, 2) + " fNearestRange: " + FloatToString(GetLocalFloat(oCreature, sTarget.sTargetType + "_RANGE" + sIndex), 0, 2) + " fNearestSecondaryRange: " + FloatToString(sTarget.fNearestSecondaryRange, 0, 2) + @@ -883,7 +1028,7 @@ struct stTarget ai_CheckForLowestValueTarget(object oCreature, struct stTarget s } struct stTarget ai_CheckForHighestValueTarget(object oCreature, struct stTarget sTarget, int nIndex, string sIndex) { - if(AI_DEBUG) ai_Debug("0i_combat", "865", "Getting highest value index: " + sIndex + + if(AI_DEBUG) ai_Debug("0i_combat", "1025", "Getting highest value index: " + sIndex + " fRange: " + FloatToString(GetLocalFloat(oCreature, sTarget.sTargetType + "_RANGE" + sIndex), 0, 2) + " fNearestRange: " + FloatToString(sTarget.fNearestRange, 0, 2) + " fNearestSecondaryRange: " + FloatToString(sTarget.fNearestSecondaryRange, 0, 2) + @@ -916,12 +1061,12 @@ struct stTarget ai_CheckForHighestValueTarget(object oCreature, struct stTarget } struct stTarget ai_CheckForNearestAllTarget(object oCreature, struct stTarget sTarget, int nIndex, string sIndex) { - if(AI_DEBUG) ai_Debug("0i_combat", "895", "Getting nearest (not disabled) index: " + sIndex + + if(AI_DEBUG) ai_Debug("0i_combat", "1153", "Getting nearest (not disabled) index: " + sIndex + " fRange: " + FloatToString(GetLocalFloat(oCreature, sTarget.sTargetType + "_RANGE" + sIndex), 0, 2) + " fNearestRange: " + FloatToString(sTarget.fNearestRange, 0, 2)); // If we are ignoring associates set then ignore them. // Has lower value or equal value and is closer. Familiars/Companions/Summons/Dominated. - if(AI_DEBUG) ai_Debug("0i_combat", "911", "Don't Ignore Associate: " + IntToString(!ai_GetAIMode(oCreature, AI_MODE_IGNORE_ASSOCIATES)) + + if(AI_DEBUG) ai_Debug("0i_combat", "1158", "Don't Ignore Associate: " + IntToString(!ai_GetAIMode(oCreature, AI_MODE_IGNORE_ASSOCIATES)) + " Not an Associate? " + IntToString(GetAssociateType(sTarget.oTarget) < 2)); if((!ai_GetAIMode(oCreature, AI_MODE_IGNORE_ASSOCIATES) || GetAssociateType(sTarget.oTarget) < 2) && GetLocalFloat(oCreature, sTarget.sTargetType + "_RANGE" + sIndex) < sTarget.fNearestRange) @@ -933,13 +1078,13 @@ struct stTarget ai_CheckForNearestAllTarget(object oCreature, struct stTarget sT } struct stTarget ai_CheckForLowestValueAllTarget(object oCreature, struct stTarget sTarget, int nIndex, string sIndex) { - if(AI_DEBUG) ai_Debug("0i_combat", "923", "Getting lowest value index: " + sIndex + + if(AI_DEBUG) ai_Debug("0i_combat", "1170", "Getting lowest value index: " + sIndex + " fRange: " + FloatToString(GetLocalFloat(oCreature, sTarget.sTargetType + "_RANGE" + sIndex), 0, 2) + " fNearestRange: " + FloatToString(sTarget.fNearestRange, 0, 2) + " sTarget.nValue: " + IntToString(sTarget.nValue) + " sTarget.nBestValue: " + IntToString(sTarget.nBestValue)); // Has less value or equal value and is closer. Ignoring only Familiars/Companions/Summons/Dominated. - if(AI_DEBUG) ai_Debug("0i_combat", "922", "Don't Ignore Associate: " + IntToString(!ai_GetAIMode(oCreature, AI_MODE_IGNORE_ASSOCIATES)) + + if(AI_DEBUG) ai_Debug("0i_combat", "1176", "Don't Ignore Associate: " + IntToString(!ai_GetAIMode(oCreature, AI_MODE_IGNORE_ASSOCIATES)) + " Not an Associate? " + IntToString(GetAssociateType(sTarget.oTarget) < 2)); if((!ai_GetAIMode(oCreature, AI_MODE_IGNORE_ASSOCIATES) || GetAssociateType(sTarget.oTarget) < 2) && sTarget.nValue < sTarget.nBestValue || @@ -952,18 +1097,112 @@ struct stTarget ai_CheckForLowestValueAllTarget(object oCreature, struct stTarge } return sTarget; } - +struct stTarget ai_CheckForNearestPhysicalTarget(object oCreature, struct stTarget sTarget, int nIndex, string sIndex) +{ + if(AI_DEBUG) ai_Debug("0i_combat", "969", "Getting nearest physical index: " + sIndex + + " fRange: " + FloatToString(GetLocalFloat(oCreature, sTarget.sTargetType + "_RANGE" + sIndex), 0, 2) + + " fNearestRange: " + FloatToString(sTarget.fNearestRange, 0, 2) + + " fNearestSecondaryRange: " + FloatToString(sTarget.fNearestSecondaryRange, 0, 2) + + " Weapon Effective: " + IntToString(GetIsWeaponEffective(sTarget.oTarget))); + // Lets put any disabled targets and associates if set in a secondary group. + if(GetLocalInt(oCreature, sTarget.sTargetType + "_DISABLED" + sIndex) || + !GetIsWeaponEffective(sTarget.oTarget) || + (ai_GetAIMode(oCreature, AI_MODE_IGNORE_ASSOCIATES) && GetAssociateType(sTarget.oTarget))) + { + if(GetLocalFloat(oCreature, sTarget.sTargetType + "_RANGE" + sIndex) < sTarget.fNearestSecondaryRange) + { + sTarget.fNearestSecondaryRange = GetLocalFloat(oCreature, sTarget.sTargetType + "_RANGE" + sIndex); + sTarget.nSecondaryIndex = nIndex; + } + } + else if(GetLocalFloat(oCreature, sTarget.sTargetType + "_RANGE" + sIndex) < sTarget.fNearestRange) + { + sTarget.fNearestRange = GetLocalFloat(oCreature, sTarget.sTargetType + "_RANGE" + sIndex); + sTarget.nIndex = nIndex; + } + return sTarget; +} +struct stTarget ai_CheckForLowestValuePhysicalTarget(object oCreature, struct stTarget sTarget, int nIndex, string sIndex) +{ + if(AI_DEBUG) ai_Debug("0i_combat", "1126", "Getting lowest value physcial index: " + sIndex + + " fRange: " + FloatToString(GetLocalFloat(oCreature, sTarget.sTargetType + "_RANGE" + sIndex), 0, 2) + + " fNearestRange: " + FloatToString(GetLocalFloat(oCreature, sTarget.sTargetType + "_RANGE" + sIndex), 0, 2) + + " fNearestSecondaryRange: " + FloatToString(sTarget.fNearestSecondaryRange, 0, 2) + + " sTarget.nValue: " + IntToString(sTarget.nValue) + + " sTarget.nBestValue: " + IntToString(sTarget.nBestValue) + + " sTarget.nBestSecondaryValue: " + IntToString(sTarget.nBestSecondaryValue) + + " Weapon Effective: " + IntToString(GetIsWeaponEffective(sTarget.oTarget))); + // Lets put any disabled targets and associates if set in a secondary group. + if(GetLocalInt(oCreature, sTarget.sTargetType + "_DISABLED" + sIndex) || + !GetIsWeaponEffective(sTarget.oTarget) || + (ai_GetAIMode(oCreature, AI_MODE_IGNORE_ASSOCIATES) && GetAssociateType(sTarget.oTarget))) + { + if(sTarget.nValue < sTarget.nBestSecondaryValue || + (sTarget.nValue == sTarget.nBestSecondaryValue && + GetLocalFloat(oCreature, sTarget.sTargetType + "_RANGE" + sIndex) < sTarget.fNearestSecondaryRange)) + { + sTarget.fNearestSecondaryRange = GetLocalFloat(oCreature, sTarget.sTargetType + "_RANGE" + sIndex); + sTarget.nBestSecondaryValue = sTarget.nValue; + sTarget.nSecondaryIndex = nIndex; + } + } + // Has less value or equal value and is closer. + else if(sTarget.nValue < sTarget.nBestValue || + (sTarget.nBestValue == sTarget.nValue && + GetLocalFloat(oCreature, sTarget.sTargetType + "_RANGE" + sIndex) < sTarget.fNearestRange)) + { + sTarget.fNearestRange = GetLocalFloat(oCreature, sTarget.sTargetType + "_RANGE" + sIndex); + sTarget.nBestValue = sTarget.nValue; + sTarget.nIndex = nIndex; + } + return sTarget; +} +struct stTarget ai_CheckForHighestValuePhysicalTarget(object oCreature, struct stTarget sTarget, int nIndex, string sIndex) +{ + if(AI_DEBUG) ai_Debug("0i_combat", "1025", "Getting highest value physical index: " + sIndex + + " fRange: " + FloatToString(GetLocalFloat(oCreature, sTarget.sTargetType + "_RANGE" + sIndex), 0, 2) + + " fNearestRange: " + FloatToString(sTarget.fNearestRange, 0, 2) + + " fNearestSecondaryRange: " + FloatToString(sTarget.fNearestSecondaryRange, 0, 2) + + " sTarget.nValue: " + IntToString(sTarget.nValue) + + " sTarget.nBestValue: " + IntToString(sTarget.nBestValue) + + " sTarget.nBestSecondaryValue: " + IntToString(sTarget.nBestSecondaryValue) + + " Weapon Effective: " + IntToString(GetIsWeaponEffective(sTarget.oTarget))); + // Lets put any disabled targets and associates if set in a secondary group. + if(GetLocalInt(oCreature, sTarget.sTargetType + "_DISABLED" + sIndex) || + !GetIsWeaponEffective(sTarget.oTarget) || + (ai_GetAIMode(oCreature, AI_MODE_IGNORE_ASSOCIATES) && GetAssociateType(sTarget.oTarget))) + { + if(sTarget.nValue > sTarget.nBestSecondaryValue || + (sTarget.nValue == sTarget.nBestSecondaryValue && + GetLocalFloat(oCreature, sTarget.sTargetType + "_RANGE" + sIndex) < sTarget.fNearestSecondaryRange)) + { + sTarget.fNearestSecondaryRange = GetLocalFloat(oCreature, sTarget.sTargetType + "_RANGE" + sIndex); + sTarget.nBestSecondaryValue = sTarget.nValue; + sTarget.nSecondaryIndex = nIndex; + } + } + // Has less value or equal value and is closer. + else if(sTarget.nValue > sTarget.nBestValue || + (sTarget.nBestValue == sTarget.nValue && + GetLocalFloat(oCreature, sTarget.sTargetType + "_RANGE" + sIndex) < sTarget.fNearestRange)) + { + sTarget.fNearestRange = GetLocalFloat(oCreature, sTarget.sTargetType + "_RANGE" + sIndex); + sTarget.nBestValue = sTarget.nValue; + sTarget.nIndex = nIndex; + } + return sTarget; +} //****************************************************************************** //************ GET INDEX/TARGETs USING COMBAT STATE FUNCTIONS ****************** //****************************************************************************** // These functions will find a target based on the combat state variables created // by the function ai_SetCombatState for associates. -int ai_GetNearestIndex(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY, int bAlwaysAtk = TRUE) +int ai_GetNearestIndex(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY) { if(GetLocalInt(oCreature, AI_RULE_AI_DIFFICULTY)) { - return ai_GetLowestCRIndex(oCreature, fMaxRange, sTargetType, bAlwaysAtk); + return ai_GetLowestCRIndex(oCreature, fMaxRange, sTargetType); } struct stTarget sTarget; sTarget.fNearestRange = fMaxRange + 1.0; @@ -974,16 +1213,14 @@ int ai_GetNearestIndex(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, sTarget.oTarget = GetLocalObject(oCreature, sTargetType + sCounter); while(sTarget.oTarget != OBJECT_INVALID) { - if(AI_DEBUG) ai_Debug("0i_combat", "911", "Getting the nearest index: " + + if(AI_DEBUG) ai_Debug("0i_combat", "1211", "Getting the nearest index: " + sCounter + " " + GetName(sTarget.oTarget) + " Seen: " + IntToString(GetLocalInt(oCreature, sTargetType + "_PERCEIVED" + sCounter)) + " GetIsDead: " + IntToString(GetIsDead(sTarget.oTarget))); if(GetLocalInt(oCreature, sTargetType + "_PERCEIVED" + sCounter) && !GetIsDead(sTarget.oTarget)) { - if(AI_DEBUG) ai_Debug("0i_combat", "918", "bAlwaysAtk: " + IntToString(bAlwaysAtk)); - if((bAlwaysAtk || !ai_IsStrongerThanMe(oCreature, nCounter)) && - ai_TargetIsInRangeofCreature(oCreature, sTargetType, sCounter, fMaxRange) && + if(ai_TargetIsInRangeofCreature(oCreature, sTargetType, sCounter, fMaxRange) && ai_TargetIsInRangeofMaster(oCreature, sTarget.oTarget)) { sTarget = ai_CheckForNearestTarget(oCreature, sTarget, nCounter, sCounter); @@ -994,16 +1231,16 @@ int ai_GetNearestIndex(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, } // If we do not have a normal target then use our best secondary target. if(sTarget.nIndex == 0 && sTarget.nSecondaryIndex != 0) sTarget.nIndex = sTarget.nSecondaryIndex; - if(AI_DEBUG) ai_Debug("0i_combat", "931", "Found nearest [" + sTargetType + "] Index: " + IntToString(sTarget.nIndex)); + if(AI_DEBUG) ai_Debug("0i_combat", "1229", "Found nearest [" + sTargetType + "] Index: " + IntToString(sTarget.nIndex)); return sTarget.nIndex; } -object ai_GetNearestTarget(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY, int bAlwaysAtk = TRUE) +object ai_GetNearestTarget(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY) { - if(AI_DEBUG) ai_Debug("0i_combat", "936", "Getting the nearest target."); - string sIndex = IntToString(ai_GetNearestIndex(oCreature, fMaxRange, sTargetType, bAlwaysAtk)); + if(AI_DEBUG) ai_Debug("0i_combat", "1234", "Getting the nearest target."); + string sIndex = IntToString(ai_GetNearestIndex(oCreature, fMaxRange, sTargetType)); return GetLocalObject(oCreature, sTargetType + sIndex); } -int ai_GetLowestCRIndex(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY, int bAlwaysAtk = TRUE) +int ai_GetLowestCRIndex(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY) { struct stTarget sTarget; sTarget.fNearestRange = fMaxRange + 1.0; @@ -1016,16 +1253,14 @@ int ai_GetLowestCRIndex(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, sTarget.oTarget = GetLocalObject(oCreature, sTargetType + sCounter); while(sTarget.oTarget != OBJECT_INVALID) { - if(AI_DEBUG) ai_Debug("0i_combat", "953", "Getting the lowest CR index: " + + if(AI_DEBUG) ai_Debug("0i_combat", "1251", "Getting the lowest CR index: " + sCounter + " " + GetName(sTarget.oTarget) + " Seen: " + IntToString(GetLocalInt(oCreature, sTargetType + "_PERCEIVED" + sCounter)) + " GetIsDead: " + IntToString(GetIsDead(sTarget.oTarget))); if(GetLocalInt(oCreature, sTargetType + "_PERCEIVED" + sCounter) && !GetIsDead(sTarget.oTarget)) { - if(AI_DEBUG) ai_Debug("0i_combat", "960", "bAlwaysAtk: " + IntToString(bAlwaysAtk)); - if((bAlwaysAtk || !ai_IsStrongerThanMe(oCreature, nCounter)) && - ai_TargetIsInRangeofCreature(oCreature, sTargetType, sCounter, fMaxRange) && + if(ai_TargetIsInRangeofCreature(oCreature, sTargetType, sCounter, fMaxRange) && ai_TargetIsInRangeofMaster(oCreature, sTarget.oTarget)) { sTarget.nValue = GetLocalInt(oCreature, sTargetType + "_COMBAT" + sCounter); @@ -1037,16 +1272,16 @@ int ai_GetLowestCRIndex(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, } // If we do not have a normal target then use our best secondary target. if(sTarget.nIndex == 0 && sTarget.nSecondaryIndex != 0) sTarget.nIndex = sTarget.nSecondaryIndex; - if(AI_DEBUG) ai_Debug("0i_combat", "974", "Found lowest CR [" + sTargetType + "] Index: " + IntToString(sTarget.nIndex)); + if(AI_DEBUG) ai_Debug("0i_combat", "1270", "Found lowest CR [" + sTargetType + "] Index: " + IntToString(sTarget.nIndex)); return sTarget.nIndex; } -object ai_GetLowestCRTarget(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY, int bAlwaysAtk = TRUE) +object ai_GetLowestCRTarget(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY) { - if(AI_DEBUG) ai_Debug("0i_combat", "979", "Getting the lowest CR target."); - string sIndex = IntToString(ai_GetLowestCRIndex(oCreature, fMaxRange, sTargetType, bAlwaysAtk)); + if(AI_DEBUG) ai_Debug("0i_combat", "1275", "Getting the lowest CR target."); + string sIndex = IntToString(ai_GetLowestCRIndex(oCreature, fMaxRange, sTargetType)); return GetLocalObject(oCreature, sTargetType + sIndex); } -int ai_GetHighestCRIndex(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY, int bAlwaysAtk = TRUE) +int ai_GetHighestCRIndex(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY) { struct stTarget sTarget; sTarget.fNearestRange = fMaxRange + 1.0; @@ -1059,16 +1294,14 @@ int ai_GetHighestCRIndex(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION sTarget.oTarget = GetLocalObject(oCreature, sTargetType + sCounter); while(sTarget.oTarget != OBJECT_INVALID) { - if(AI_DEBUG) ai_Debug("0i_combat", "995", "Getting the highest CR index: " + + if(AI_DEBUG) ai_Debug("0i_combat", "1292", "Getting the highest CR index: " + sCounter + " " + GetName(sTarget.oTarget) + " Seen: " + IntToString(GetLocalInt(oCreature, sTargetType + "_PERCEIVED" + sCounter)) + " GetIsDead: " + IntToString(GetIsDead(sTarget.oTarget))); if(GetLocalInt(oCreature, sTargetType + "_PERCEIVED" + sCounter) && !GetIsDead(sTarget.oTarget)) { - if(AI_DEBUG) ai_Debug("0i_combat", "1002", "bAlwaysAtk: " + IntToString(bAlwaysAtk)); - if((bAlwaysAtk || !ai_IsStrongerThanMe(oCreature, nCounter)) && - ai_TargetIsInRangeofCreature(oCreature, sTargetType, sCounter, fMaxRange) && + if(ai_TargetIsInRangeofCreature(oCreature, sTargetType, sCounter, fMaxRange) && ai_TargetIsInRangeofMaster(oCreature, sTarget.oTarget)) { sTarget.nValue = GetLocalInt(oCreature, sTargetType + "_COMBAT" + sCounter); @@ -1080,16 +1313,58 @@ int ai_GetHighestCRIndex(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION } // If we do not have a normal target then use our best secondary target. if(sTarget.nIndex == 0 && sTarget.nSecondaryIndex != 0) sTarget.nIndex = sTarget.nSecondaryIndex; - if(AI_DEBUG) ai_Debug("0i_combat", "1016", "Found highest CR [" + sTargetType + "] Index: " + IntToString(sTarget.nIndex)); + if(AI_DEBUG) ai_Debug("0i_combat", "1311", "Found highest CR [" + sTargetType + "] Index: " + IntToString(sTarget.nIndex)); return sTarget.nIndex; } -object ai_GetHighestCRTarget(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY, int bAlwaysAtk = TRUE) +object ai_GetHighestCRTarget(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY) { - if(AI_DEBUG) ai_Debug("0i_combat", "1021", "Getting the highest CR target."); - string sIndex = IntToString(ai_GetHighestCRIndex(oCreature, fMaxRange, sTargetType, bAlwaysAtk)); + if(AI_DEBUG) ai_Debug("0i_combat", "1316", "Getting the highest CR target."); + string sIndex = IntToString(ai_GetHighestCRIndex(oCreature, fMaxRange, sTargetType)); return GetLocalObject(oCreature, sTargetType + sIndex); } -int ai_GetLowestMeleeIndex(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY) +int ai_GetNearestIndexNotInAOE(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY) +{ + if(GetLocalInt(oCreature, AI_RULE_AI_DIFFICULTY)) + { + ai_GetLowestCRIndexNotInAOE(oCreature, fMaxRange, sTargetType); + } + struct stTarget sTarget; + sTarget.fNearestRange = fMaxRange + 1.0; + sTarget.fNearestSecondaryRange = sTarget.fNearestRange; + sTarget.sTargetType = AI_ENEMY; + int nCounter = 1; + string sCounter = "1"; + sTarget.oTarget = GetLocalObject(oCreature, AI_ENEMY + sCounter); + while(sTarget.oTarget != OBJECT_INVALID) + { + if(AI_DEBUG) ai_Debug("0i_combat", "1335", "Getting the nearest not in AOE index: " + + sCounter + " " + GetName(sTarget.oTarget) + + " Seen: " + IntToString(GetLocalInt(oCreature, AI_ENEMY_PERCEIVED + sCounter)) + + " GetIsDead: " + IntToString(GetIsDead(sTarget.oTarget))); + if(GetLocalInt(oCreature, AI_ENEMY_PERCEIVED + sCounter) && + !GetIsDead(sTarget.oTarget) && !ai_IsInADangerousAOE(sTarget.oTarget)) + { + if(ai_TargetIsInRangeofCreature(oCreature, AI_ENEMY, sCounter, fMaxRange) && + ai_TargetIsInRangeofMaster(oCreature, sTarget.oTarget)) + { + sTarget = ai_CheckForNearestTarget(oCreature, sTarget, nCounter, sCounter); + } + } + sCounter = IntToString(++nCounter); + sTarget.oTarget = GetLocalObject(oCreature, AI_ENEMY + sCounter); + } + // If we do not have a normal target then use our best secondary target. + if(sTarget.nIndex == 0 && sTarget.nSecondaryIndex != 0) sTarget.nIndex = sTarget.nSecondaryIndex; + if(AI_DEBUG) ai_Debug("0i_combat", "1353", "Found nearest not in AOE Index: " + IntToString(sTarget.nIndex)); + return sTarget.nIndex; +} +object ai_GetNearestTargetNotInAOE(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY) +{ + if(AI_DEBUG) ai_Debug("0i_combat", "1358", "Getting the nearest not in AOE target."); + string sIndex = IntToString(ai_GetNearestIndexNotInAOE(oCreature, fMaxRange, sTargetType)); + return GetLocalObject(oCreature, sTargetType + sIndex); +} +int ai_GetLowestCRIndexNotInAOE(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY) { struct stTarget sTarget; sTarget.fNearestRange = fMaxRange + 1.0; @@ -1102,7 +1377,355 @@ int ai_GetLowestMeleeIndex(object oCreature, float fMaxRange = AI_RANGE_PERCEPTI sTarget.oTarget = GetLocalObject(oCreature, sTargetType + sCounter); while(sTarget.oTarget != OBJECT_INVALID) { - if(AI_DEBUG) ai_Debug("0i_combat", "1037", "Getting the lowest InMelee index: " + + if(AI_DEBUG) ai_Debug("0i_combat", "1375", "Getting the lowest CR not in AOE index: " + + sCounter + " " + GetName(sTarget.oTarget) + + " Seen: " + IntToString(GetLocalInt(oCreature, sTargetType + "_PERCEIVED" + sCounter)) + + " GetIsDead: " + IntToString(GetIsDead(sTarget.oTarget))); + if(GetLocalInt(oCreature, sTargetType + "_PERCEIVED" + sCounter) && + !GetIsDead(sTarget.oTarget) && !ai_IsInADangerousAOE(sTarget.oTarget)) + { + if(ai_TargetIsInRangeofCreature(oCreature, sTargetType, sCounter, fMaxRange) && + ai_TargetIsInRangeofMaster(oCreature, sTarget.oTarget)) + { + sTarget.nValue = GetLocalInt(oCreature, sTargetType + "_COMBAT" + sCounter); + sTarget = ai_CheckForLowestValueTarget(oCreature, sTarget, nCounter, sCounter); + } + } + sCounter = IntToString(++nCounter); + sTarget.oTarget = GetLocalObject(oCreature, sTargetType + sCounter); + } + // If we do not have a normal target then use our best secondary target. + if(sTarget.nIndex == 0 && sTarget.nSecondaryIndex != 0) sTarget.nIndex = sTarget.nSecondaryIndex; + if(AI_DEBUG) ai_Debug("0i_combat", "1394", "Found lowest CR not in AOE [" + sTargetType + "] Index: " + IntToString(sTarget.nIndex)); + return sTarget.nIndex; +} +object ai_GetLowestTargetNotInAOE(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY) +{ + if(AI_DEBUG) ai_Debug("0i_combat", "1399", "Getting the lowest cr not in AOE target."); + string sIndex = IntToString(ai_GetLowestCRIndexNotInAOE(oCreature, fMaxRange, sTargetType)); + return GetLocalObject(oCreature, sTargetType + sIndex); +} +int ai_GetHighestCRIndexNotInAOE(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY) +{ + struct stTarget sTarget; + sTarget.fNearestRange = fMaxRange + 1.0; + sTarget.fNearestSecondaryRange = sTarget.fNearestRange; + sTarget.nBestValue = -100; + sTarget.nBestSecondaryValue = -100; + sTarget.sTargetType = sTargetType; + int nCounter = 1; + string sCounter = "1"; + sTarget.oTarget = GetLocalObject(oCreature, sTargetType + sCounter); + while(sTarget.oTarget != OBJECT_INVALID) + { + if(AI_DEBUG) ai_Debug("0i_combat", "1416", "Getting the highest CR not in AOE index: " + + sCounter + " " + GetName(sTarget.oTarget) + + " Seen: " + IntToString(GetLocalInt(oCreature, sTargetType + "_PERCEIVED" + sCounter)) + + " GetIsDead: " + IntToString(GetIsDead(sTarget.oTarget))); + if(GetLocalInt(oCreature, sTargetType + "_PERCEIVED" + sCounter) && + !GetIsDead(sTarget.oTarget) && !ai_IsInADangerousAOE(sTarget.oTarget)) + { + if(ai_TargetIsInRangeofCreature(oCreature, sTargetType, sCounter, fMaxRange) && + ai_TargetIsInRangeofMaster(oCreature, sTarget.oTarget)) + { + sTarget.nValue = GetLocalInt(oCreature, sTargetType + "_COMBAT" + sCounter); + sTarget = ai_CheckForHighestValueTarget(oCreature, sTarget, nCounter, sCounter); + } + } + sCounter = IntToString(++nCounter); + sTarget.oTarget = GetLocalObject(oCreature, sTargetType + sCounter); + } + // If we do not have a normal target then use our best secondary target. + if(sTarget.nIndex == 0 && sTarget.nSecondaryIndex != 0) sTarget.nIndex = sTarget.nSecondaryIndex; + if(AI_DEBUG) ai_Debug("0i_combat", "1435", "Found highest CR not in AOE [" + sTargetType + "] Index: " + IntToString(sTarget.nIndex)); + return sTarget.nIndex; +} +object ai_GetHighestTargetNotInAOE(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY) +{ + if(AI_DEBUG) ai_Debug("0i_combat", "1440", "Getting the highest cr not in AOE target."); + string sIndex = IntToString(ai_GetHighestCRIndexNotInAOE(oCreature, fMaxRange, sTargetType)); + return GetLocalObject(oCreature, sTargetType + sIndex); +} +int ai_GetNearestPhysicalIndex(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY, int bAlwaysAtk = TRUE) +{ + if(GetLocalInt(oCreature, AI_RULE_AI_DIFFICULTY)) + { + return ai_GetLowestCRPhysicalIndex(oCreature, fMaxRange, sTargetType, bAlwaysAtk); + } + struct stTarget sTarget; + sTarget.fNearestRange = fMaxRange + 1.0; + sTarget.fNearestSecondaryRange = sTarget.fNearestRange; + sTarget.sTargetType = sTargetType; + int nCounter = 1; + string sCounter = "1"; + sTarget.oTarget = GetLocalObject(oCreature, sTargetType + sCounter); + while(sTarget.oTarget != OBJECT_INVALID) + { + if(AI_DEBUG) ai_Debug("0i_combat", "1464", "Getting the nearest physical index: " + + sCounter + " " + GetName(sTarget.oTarget) + + " Seen: " + IntToString(GetLocalInt(oCreature, sTargetType + "_PERCEIVED" + sCounter)) + + " GetIsDead: " + IntToString(GetIsDead(sTarget.oTarget))); + if(GetLocalInt(oCreature, sTargetType + "_PERCEIVED" + sCounter) && + !GetIsDead(sTarget.oTarget)) + { + if(AI_DEBUG) ai_Debug("0i_combat", "1471", "bAlwaysAtk: " + IntToString(bAlwaysAtk)); + if((bAlwaysAtk || !ai_IsStrongerThanMe(oCreature, nCounter)) && + ai_TargetIsInRangeofCreature(oCreature, sTargetType, sCounter, fMaxRange) && + ai_TargetIsInRangeofMaster(oCreature, sTarget.oTarget)) + { + sTarget = ai_CheckForNearestPhysicalTarget(oCreature, sTarget, nCounter, sCounter); + } + } + sCounter = IntToString(++nCounter); + sTarget.oTarget = GetLocalObject(oCreature, sTargetType + sCounter); + } + // If we do not have a normal target then use our best secondary target. + if(sTarget.nIndex == 0 && sTarget.nSecondaryIndex != 0) sTarget.nIndex = sTarget.nSecondaryIndex; + if(AI_DEBUG) ai_Debug("0i_combat", "1484", "Found nearest [" + sTargetType + "] Physical Index: " + IntToString(sTarget.nIndex)); + return sTarget.nIndex; +} +object ai_GetNearestPhysicalTarget(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY, int bAlwaysAtk = TRUE) +{ + if(AI_DEBUG) ai_Debug("0i_combat", "1484", "Getting the nearest physcial target."); + string sIndex = IntToString(ai_GetNearestPhysicalIndex(oCreature, fMaxRange, sTargetType, bAlwaysAtk)); + return GetLocalObject(oCreature, sTargetType + sIndex); +} +int ai_GetLowestCRPhysicalIndex(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY, int bAlwaysAtk = TRUE) +{ + struct stTarget sTarget; + sTarget.fNearestRange = fMaxRange + 1.0; + sTarget.fNearestSecondaryRange = sTarget.fNearestRange; + sTarget.nBestValue = 100; + sTarget.nBestSecondaryValue = 100; + sTarget.sTargetType = sTargetType; + int nCounter = 1; + string sCounter = "1"; + sTarget.oTarget = GetLocalObject(oCreature, sTargetType + sCounter); + while(sTarget.oTarget != OBJECT_INVALID) + { + if(AI_DEBUG) ai_Debug("0i_combat", "1501", "Getting the lowest CR physical index: " + + sCounter + " " + GetName(sTarget.oTarget) + + " Seen: " + IntToString(GetLocalInt(oCreature, sTargetType + "_PERCEIVED" + sCounter)) + + " GetIsDead: " + IntToString(GetIsDead(sTarget.oTarget))); + if(GetLocalInt(oCreature, sTargetType + "_PERCEIVED" + sCounter) && + !GetIsDead(sTarget.oTarget)) + { + if(AI_DEBUG) ai_Debug("0i_combat", "1508", "bAlwaysAtk: " + IntToString(bAlwaysAtk)); + if((bAlwaysAtk || !ai_IsStrongerThanMe(oCreature, nCounter)) && + ai_TargetIsInRangeofCreature(oCreature, sTargetType, sCounter, fMaxRange) && + ai_TargetIsInRangeofMaster(oCreature, sTarget.oTarget)) + { + sTarget.nValue = GetLocalInt(oCreature, sTargetType + "_COMBAT" + sCounter); + sTarget = ai_CheckForLowestValuePhysicalTarget(oCreature, sTarget, nCounter, sCounter); + } + } + sCounter = IntToString(++nCounter); + sTarget.oTarget = GetLocalObject(oCreature, sTargetType + sCounter); + } + // If we do not have a normal target then use our best secondary target. + if(sTarget.nIndex == 0 && sTarget.nSecondaryIndex != 0) sTarget.nIndex = sTarget.nSecondaryIndex; + if(AI_DEBUG) ai_Debug("0i_combat", "1522", "Found lowest CR [" + sTargetType + "] Physical Index: " + IntToString(sTarget.nIndex)); + return sTarget.nIndex; +} +object ai_GetLowestCRPhysicalTarget(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY, int bAlwaysAtk = TRUE) +{ + if(AI_DEBUG) ai_Debug("0i_combat", "1527", "Getting the lowest CR physical target."); + string sIndex = IntToString(ai_GetLowestCRPhysicalIndex(oCreature, fMaxRange, sTargetType, bAlwaysAtk)); + return GetLocalObject(oCreature, sTargetType + sIndex); +} +int ai_GetHighestCRPhysicalIndex(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY, int bAlwaysAtk = TRUE) +{ + struct stTarget sTarget; + sTarget.fNearestRange = fMaxRange + 1.0; + sTarget.fNearestSecondaryRange = sTarget.fNearestRange; + sTarget.nBestValue = -100; + sTarget.nBestSecondaryValue = -100; + sTarget.sTargetType = sTargetType; + int nCounter = 1; + string sCounter = "1"; + sTarget.oTarget = GetLocalObject(oCreature, sTargetType + sCounter); + while(sTarget.oTarget != OBJECT_INVALID) + { + if(AI_DEBUG) ai_Debug("0i_combat", "1544", "Getting the highest CR physical index: " + + sCounter + " " + GetName(sTarget.oTarget) + + " Seen: " + IntToString(GetLocalInt(oCreature, sTargetType + "_PERCEIVED" + sCounter)) + + " GetIsDead: " + IntToString(GetIsDead(sTarget.oTarget))); + if(GetLocalInt(oCreature, sTargetType + "_PERCEIVED" + sCounter) && + !GetIsDead(sTarget.oTarget)) + { + if(AI_DEBUG) ai_Debug("0i_combat", "1551", "bAlwaysAtk: " + IntToString(bAlwaysAtk)); + if((bAlwaysAtk || !ai_IsStrongerThanMe(oCreature, nCounter)) && + ai_TargetIsInRangeofCreature(oCreature, sTargetType, sCounter, fMaxRange) && + ai_TargetIsInRangeofMaster(oCreature, sTarget.oTarget)) + { + sTarget.nValue = GetLocalInt(oCreature, sTargetType + "_COMBAT" + sCounter); + sTarget = ai_CheckForHighestValuePhysicalTarget(oCreature, sTarget, nCounter, sCounter); + } + } + sCounter = IntToString(++nCounter); + sTarget.oTarget = GetLocalObject(oCreature, sTargetType + sCounter); + } + // If we do not have a normal target then use our best secondary target. + if(sTarget.nIndex == 0 && sTarget.nSecondaryIndex != 0) sTarget.nIndex = sTarget.nSecondaryIndex; + if(AI_DEBUG) ai_Debug("0i_combat", "1565", "Found highest CR [" + sTargetType + "] Physical Index: " + IntToString(sTarget.nIndex)); + return sTarget.nIndex; +} +object ai_GetHighestCRPhysicalTarget(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY, int bAlwaysAtk = TRUE) +{ + if(AI_DEBUG) ai_Debug("0i_combat", "1570", "Getting the highest CR physical target."); + string sIndex = IntToString(ai_GetHighestCRPhysicalIndex(oCreature, fMaxRange, sTargetType, bAlwaysAtk)); + return GetLocalObject(oCreature, sTargetType + sIndex); +} +int ai_GetNearestPhysicalIndexNotInAOE(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY, int bAlwaysAtk = TRUE) +{ + if(GetLocalInt(oCreature, AI_RULE_AI_DIFFICULTY)) + { + ai_GetLowestCRPhysicalIndexNotInAOE(oCreature, fMaxRange, sTargetType, bAlwaysAtk); + } + struct stTarget sTarget; + sTarget.fNearestRange = fMaxRange + 1.0; + sTarget.fNearestSecondaryRange = sTarget.fNearestRange; + sTarget.sTargetType = AI_ENEMY; + int nCounter = 1; + string sCounter = "1"; + sTarget.oTarget = GetLocalObject(oCreature, AI_ENEMY + sCounter); + while(sTarget.oTarget != OBJECT_INVALID) + { + if(AI_DEBUG) ai_Debug("0i_combat", "1589", "Getting the nearest physical index not in AOE: " + + sCounter + " " + GetName(sTarget.oTarget) + + " Seen: " + IntToString(GetLocalInt(oCreature, AI_ENEMY_PERCEIVED + sCounter)) + + " GetIsDead: " + IntToString(GetIsDead(sTarget.oTarget))); + if(GetLocalInt(oCreature, AI_ENEMY_PERCEIVED + sCounter) && + !GetIsDead(sTarget.oTarget) && !ai_IsInADangerousAOE(sTarget.oTarget)) + { + if(AI_DEBUG) ai_Debug("0i_combat", "1596", "bAlwaysAtk: " + IntToString(bAlwaysAtk) + + " Weapon Effective: " + IntToString(GetIsWeaponEffective(sTarget.oTarget))); + if((bAlwaysAtk || !ai_IsStrongerThanMe(oCreature, nCounter)) && + GetIsWeaponEffective(sTarget.oTarget) && + ai_TargetIsInRangeofCreature(oCreature, AI_ENEMY, sCounter, fMaxRange) && + ai_TargetIsInRangeofMaster(oCreature, sTarget.oTarget)) + { + sTarget = ai_CheckForNearestTarget(oCreature, sTarget, nCounter, sCounter); + } + } + sCounter = IntToString(++nCounter); + sTarget.oTarget = GetLocalObject(oCreature, AI_ENEMY + sCounter); + } + // If we do not have a normal target then use our best secondary target. + if(sTarget.nIndex == 0 && sTarget.nSecondaryIndex != 0) sTarget.nIndex = sTarget.nSecondaryIndex; + if(AI_DEBUG) ai_Debug("0i_combat", "1609", "Found nearest Physcial Index not in AOE: " + IntToString(sTarget.nIndex)); + return sTarget.nIndex; +} +object ai_GetNearestPhysicalTargetNotInAOE(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY, int bAlwaysAtk = TRUE) +{ + if(AI_DEBUG) ai_Debug("0i_combat", "1614", "Getting the nearest physical target not in AOE."); + string sIndex = IntToString(ai_GetNearestPhysicalIndexNotInAOE(oCreature, fMaxRange, sTargetType, bAlwaysAtk)); + return GetLocalObject(oCreature, sTargetType + sIndex); +} +int ai_GetLowestCRPhysicalIndexNotInAOE(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY, int bAlwaysAtk = TRUE) +{ + struct stTarget sTarget; + sTarget.fNearestRange = fMaxRange + 1.0; + sTarget.fNearestSecondaryRange = sTarget.fNearestRange; + sTarget.nBestValue = 100; + sTarget.nBestSecondaryValue = 100; + sTarget.sTargetType = sTargetType; + int nCounter = 1; + string sCounter = "1"; + sTarget.oTarget = GetLocalObject(oCreature, sTargetType + sCounter); + while(sTarget.oTarget != OBJECT_INVALID) + { + if(AI_DEBUG) ai_Debug("0i_combat", "1631", "Getting the lowest CR physical index not in AOE: " + + sCounter + " " + GetName(sTarget.oTarget) + + " Seen: " + IntToString(GetLocalInt(oCreature, sTargetType + "_PERCEIVED" + sCounter)) + + " GetIsDead: " + IntToString(GetIsDead(sTarget.oTarget))); + if(GetLocalInt(oCreature, sTargetType + "_PERCEIVED" + sCounter) && + !GetIsDead(sTarget.oTarget) && !ai_IsInADangerousAOE(sTarget.oTarget)) + { + if(AI_DEBUG) ai_Debug("0i_combat", "1551", "bAlwaysAtk: " + IntToString(bAlwaysAtk) + + " Weapon Effective: " + IntToString(GetIsWeaponEffective(sTarget.oTarget))); + if((bAlwaysAtk || !ai_IsStrongerThanMe(oCreature, nCounter)) && + GetIsWeaponEffective(sTarget.oTarget) && + ai_TargetIsInRangeofCreature(oCreature, sTargetType, sCounter, fMaxRange) && + ai_TargetIsInRangeofMaster(oCreature, sTarget.oTarget)) + { + sTarget.nValue = GetLocalInt(oCreature, sTargetType + "_COMBAT" + sCounter); + sTarget = ai_CheckForLowestValueTarget(oCreature, sTarget, nCounter, sCounter); + } + } + sCounter = IntToString(++nCounter); + sTarget.oTarget = GetLocalObject(oCreature, sTargetType + sCounter); + } + // If we do not have a normal target then use our best secondary target. + if(sTarget.nIndex == 0 && sTarget.nSecondaryIndex != 0) sTarget.nIndex = sTarget.nSecondaryIndex; + if(AI_DEBUG) ai_Debug("0i_combat", "1652", "Found lowest CR Physical Index not in AOE [" + sTargetType + "]: " + IntToString(sTarget.nIndex)); + return sTarget.nIndex; +} +object ai_GetLowestPhysicalTargetNotInAOE(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY, int bAlwaysAtk = TRUE) +{ + if(AI_DEBUG) ai_Debug("0i_combat", "1657", "Getting the lowest cr physcial target not in AOE."); + string sIndex = IntToString(ai_GetLowestCRPhysicalIndexNotInAOE(oCreature, fMaxRange, sTargetType, bAlwaysAtk)); + return GetLocalObject(oCreature, sTargetType + sIndex); +} +int ai_GetHighestCRPhysicalIndexNotInAOE(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY, int bAlwaysAtk = TRUE) +{ + struct stTarget sTarget; + sTarget.fNearestRange = fMaxRange + 1.0; + sTarget.fNearestSecondaryRange = sTarget.fNearestRange; + sTarget.nBestValue = -100; + sTarget.nBestSecondaryValue = -100; + sTarget.sTargetType = sTargetType; + int nCounter = 1; + string sCounter = "1"; + sTarget.oTarget = GetLocalObject(oCreature, sTargetType + sCounter); + while(sTarget.oTarget != OBJECT_INVALID) + { + if(AI_DEBUG) ai_Debug("0i_combat", "1674", "Getting the highest CR physical index not in AOE: " + + sCounter + " " + GetName(sTarget.oTarget) + + " Seen: " + IntToString(GetLocalInt(oCreature, sTargetType + "_PERCEIVED" + sCounter)) + + " GetIsDead: " + IntToString(GetIsDead(sTarget.oTarget))); + if(GetLocalInt(oCreature, sTargetType + "_PERCEIVED" + sCounter) && + !GetIsDead(sTarget.oTarget) && !ai_IsInADangerousAOE(sTarget.oTarget)) + { + if(AI_DEBUG) ai_Debug("0i_combat", "1681", "bAlwaysAtk: " + IntToString(bAlwaysAtk) + + " Weapon Effective: " + IntToString(GetIsWeaponEffective(sTarget.oTarget))); + if((bAlwaysAtk || !ai_IsStrongerThanMe(oCreature, nCounter)) && + GetIsWeaponEffective(sTarget.oTarget) && + ai_TargetIsInRangeofCreature(oCreature, sTargetType, sCounter, fMaxRange) && + ai_TargetIsInRangeofMaster(oCreature, sTarget.oTarget)) + { + sTarget.nValue = GetLocalInt(oCreature, sTargetType + "_COMBAT" + sCounter); + sTarget = ai_CheckForHighestValueTarget(oCreature, sTarget, nCounter, sCounter); + } + } + sCounter = IntToString(++nCounter); + sTarget.oTarget = GetLocalObject(oCreature, sTargetType + sCounter); + } + // If we do not have a normal target then use our best secondary target. + if(sTarget.nIndex == 0 && sTarget.nSecondaryIndex != 0) sTarget.nIndex = sTarget.nSecondaryIndex; + if(AI_DEBUG) ai_Debug("0i_combat", "1695", "Found highest CR Physical Index not in AOE [" + sTargetType + "]: " + IntToString(sTarget.nIndex)); + return sTarget.nIndex; +} +object ai_GetHighestCRPhysicalTargetNotInAOE(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY, int bAlwaysAtk = TRUE) +{ + if(AI_DEBUG) ai_Debug("0i_combat", "1700", "Getting the highest cr physical target not in AOE."); + string sIndex = IntToString(ai_GetHighestCRPhysicalIndexNotInAOE(oCreature, fMaxRange, sTargetType, bAlwaysAtk)); + return GetLocalObject(oCreature, sTargetType + sIndex); +} +int ai_GetLowestGroupIndex(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY) +{ + struct stTarget sTarget; + sTarget.fNearestRange = fMaxRange + 1.0; + sTarget.fNearestSecondaryRange = sTarget.fNearestRange; + sTarget.nBestValue = 100; + sTarget.nBestSecondaryValue = 100; + sTarget.sTargetType = sTargetType; + int nCounter = 1; + string sCounter = "1"; + sTarget.oTarget = GetLocalObject(oCreature, sTargetType + sCounter); + while(sTarget.oTarget != OBJECT_INVALID) + { + if(AI_DEBUG) ai_Debug("0i_combat", "1717", "Getting the lowest group index: " + sCounter + " " + GetName(sTarget.oTarget) + " Seen: " + IntToString(GetLocalInt(oCreature, sTargetType + "_PERCEIVED" + sCounter)) + " GetIsDead: " + IntToString(GetIsDead(sTarget.oTarget))); @@ -1121,10 +1744,10 @@ int ai_GetLowestMeleeIndex(object oCreature, float fMaxRange = AI_RANGE_PERCEPTI } // If we do not have a normal target then use our best secondary target. if(sTarget.nIndex == 0 && sTarget.nSecondaryIndex != 0) sTarget.nIndex = sTarget.nSecondaryIndex; - if(AI_DEBUG) ai_Debug("0i_combat", "1058", "Found lowest InMelee [" + sTargetType + "] Index: " + IntToString(sTarget.nIndex)); + if(AI_DEBUG) ai_Debug("0i_combat", "1736", "Found lowest Group Index [" + sTargetType + "]: " + IntToString(sTarget.nIndex)); return sTarget.nIndex; } -int ai_GetHighestMeleeIndex(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY) +int ai_GetHighestGroupIndex(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY) { struct stTarget sTarget; sTarget.fNearestRange = fMaxRange + 1.0; @@ -1137,7 +1760,7 @@ int ai_GetHighestMeleeIndex(object oCreature, float fMaxRange = AI_RANGE_PERCEPT sTarget.oTarget = GetLocalObject(oCreature, sTargetType + sCounter); while(sTarget.oTarget != OBJECT_INVALID) { - if(AI_DEBUG) ai_Debug("0i_combat", "1073", "Getting the highest InMelee index: " + + if(AI_DEBUG) ai_Debug("0i_combat", "1752", "Getting the highest group index: " + sCounter + " " + GetName(sTarget.oTarget) + " Seen: " + IntToString(GetLocalInt(oCreature, sTargetType + "_PERCEIVED" + sCounter)) + " GetIsDead: " + IntToString(GetIsDead(sTarget.oTarget))); @@ -1156,13 +1779,54 @@ int ai_GetHighestMeleeIndex(object oCreature, float fMaxRange = AI_RANGE_PERCEPT } // If we do not have a normal target then use our best secondary target. if(sTarget.nIndex == 0 && sTarget.nSecondaryIndex != 0) sTarget.nIndex = sTarget.nSecondaryIndex; - if(AI_DEBUG) ai_Debug("0i_combat", "1094", "Found highest InMelee [" + sTargetType + "] Index: " + IntToString(sTarget.nIndex)); + if(AI_DEBUG) ai_Debug("0i_combat", "1771", "Found highest Group Index [" + sTargetType + "]: " + IntToString(sTarget.nIndex)); return sTarget.nIndex; } -object ai_CheckForGroupedTarget(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY) +object ai_GetGroupTarget(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY) { - if(AI_DEBUG) ai_Debug("0i_combat", "1124", "Getting the highest InMelee target."); - string sIndex = IntToString(ai_GetHighestMeleeIndex(oCreature, fMaxRange, sTargetType)); + if(AI_DEBUG) ai_Debug("0i_combat", "1776", "Getting the highest group target."); + string sIndex = IntToString(ai_GetHighestGroupIndex(oCreature, fMaxRange, sTargetType)); + return GetLocalObject(oCreature, sTargetType + sIndex); +} +int ai_GetHighestGroupIndexNotInAOE(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY) +{ + struct stTarget sTarget; + sTarget.fNearestRange = fMaxRange + 1.0; + sTarget.fNearestSecondaryRange = sTarget.fNearestRange; + sTarget.nBestValue = -100; + sTarget.nBestSecondaryValue = -100; + sTarget.sTargetType = sTargetType; + int nCounter = 1; + string sCounter = "1"; + sTarget.oTarget = GetLocalObject(oCreature, sTargetType + sCounter); + while(sTarget.oTarget != OBJECT_INVALID) + { + if(AI_DEBUG) ai_Debug("0i_combat", "1793", "Getting the highest group index not in AOE: " + + sCounter + " " + GetName(sTarget.oTarget) + + " Seen: " + IntToString(GetLocalInt(oCreature, sTargetType + "_PERCEIVED" + sCounter)) + + " GetIsDead: " + IntToString(GetIsDead(sTarget.oTarget))); + if(GetLocalInt(oCreature, sTargetType + "_PERCEIVED" + sCounter) && + !GetIsDead(sTarget.oTarget) && !ai_IsInADangerousAOE(sTarget.oTarget)) + { + if(ai_TargetIsInRangeofCreature(oCreature, sTargetType, sCounter, fMaxRange) && + ai_TargetIsInRangeofMaster(oCreature, sTarget.oTarget)) + { + sTarget.nValue = GetLocalInt(oCreature, sTargetType + "_MELEE" + sCounter); + sTarget = ai_CheckForHighestValueTarget(oCreature, sTarget, nCounter, sCounter); + } + } + sCounter = IntToString(++nCounter); + sTarget.oTarget = GetLocalObject(oCreature, sTargetType + sCounter); + } + // If we do not have a normal target then use our best secondary target. + if(sTarget.nIndex == 0 && sTarget.nSecondaryIndex != 0) sTarget.nIndex = sTarget.nSecondaryIndex; + if(AI_DEBUG) ai_Debug("0i_combat", "1812", "Found highest Group Index not in AOE [" + sTargetType + "]: " + IntToString(sTarget.nIndex)); + return sTarget.nIndex; +} +object ai_GetGroupTargetNotInAOE(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY) +{ + if(AI_DEBUG) ai_Debug("0i_combat", "1818", "Getting the highest group target not in AOE."); + string sIndex = IntToString(ai_GetHighestGroupIndexNotInAOE(oCreature, fMaxRange, sTargetType)); return GetLocalObject(oCreature, sTargetType + sIndex); } int ai_GetMostWoundedIndex(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY, int bAlwaysAtk = TRUE) @@ -1178,14 +1842,14 @@ int ai_GetMostWoundedIndex(object oCreature, float fMaxRange = AI_RANGE_PERCEPTI sTarget.oTarget = GetLocalObject(oCreature, sTargetType + sCounter); while(sTarget.oTarget != OBJECT_INVALID) { - if(AI_DEBUG) ai_Debug("0i_combat", "1113", "Getting the most wounded index: " + + if(AI_DEBUG) ai_Debug("0i_combat", "1834", "Getting the most wounded index: " + sCounter + " " + GetName(sTarget.oTarget) + " Seen: " + IntToString(GetLocalInt(oCreature, sTargetType + "_PERCEIVED" + sCounter)) + " GetIsDead: " + IntToString(GetIsDead(sTarget.oTarget))); if(GetLocalInt(oCreature, sTargetType + "_PERCEIVED" + sCounter) && !GetIsDead(sTarget.oTarget)) { - if(AI_DEBUG) ai_Debug("0i_combat", "1120", "bAlwaysAtk: " + IntToString(bAlwaysAtk)); + if(AI_DEBUG) ai_Debug("0i_combat", "1841", "bAlwaysAtk: " + IntToString(bAlwaysAtk)); if((bAlwaysAtk || !ai_IsStrongerThanMe(oCreature, nCounter)) && ai_TargetIsInRangeofCreature(oCreature, sTargetType, sCounter, fMaxRange) && ai_TargetIsInRangeofMaster(oCreature, sTarget.oTarget)) @@ -1199,12 +1863,12 @@ int ai_GetMostWoundedIndex(object oCreature, float fMaxRange = AI_RANGE_PERCEPTI } // If we do not have a normal target then use our best secondary target. if(sTarget.nIndex == 0 && sTarget.nSecondaryIndex != 0) sTarget.nIndex = sTarget.nSecondaryIndex; - if(AI_DEBUG) ai_Debug("0i_combat", "1130", "Found most wounded [" + sTargetType + "] Index: " + IntToString(sTarget.nIndex)); + if(AI_DEBUG) ai_Debug("0i_combat", "1855", "Found most wounded [" + sTargetType + "] Index: " + IntToString(sTarget.nIndex)); return sTarget.nIndex; } object ai_GetMostWoundedTarget(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY, int bAlwaysAtk = TRUE) { - if(AI_DEBUG) ai_Debug("0i_combat", "1139", "Getting the most wounded target."); + if(AI_DEBUG) ai_Debug("0i_combat", "1860", "Getting the most wounded target."); string sIndex = IntToString(ai_GetMostWoundedIndex(oCreature, fMaxRange, sTargetType, bAlwaysAtk)); return GetLocalObject(oCreature, sTargetType + sIndex); } @@ -1219,7 +1883,7 @@ int ai_GetAllyToHealIndex(object oCreature, float fMaxRange = AI_RANGE_PERCEPTIO sTarget.oTarget = GetLocalObject(oCreature, sTarget.sTargetType + sCounter); while(sTarget.oTarget != OBJECT_INVALID) { - if(AI_DEBUG) ai_Debug("0i_combat", "1154", "Getting the most wounded ally to heal index: " + + if(AI_DEBUG) ai_Debug("0i_combat", "1875", "Getting the most wounded ally to heal index: " + sCounter + " " + GetName(sTarget.oTarget) + " Seen: " + IntToString(GetLocalInt(oCreature, AI_ALLY_PERCEIVED + sCounter)) + " GetIsDead: " + IntToString(GetIsDead(sTarget.oTarget))); @@ -1237,12 +1901,12 @@ int ai_GetAllyToHealIndex(object oCreature, float fMaxRange = AI_RANGE_PERCEPTIO sTarget.oTarget = GetLocalObject(oCreature, AI_ALLY + sCounter); } // If we do not have a normal target then we are done.. - if(AI_DEBUG) ai_Debug("0i_combat", "1187", "Found most wounded ally to heal Index: " + IntToString(sTarget.nIndex)); + if(AI_DEBUG) ai_Debug("0i_combat", "1893", "Found most wounded ally to heal Index: " + IntToString(sTarget.nIndex)); return sTarget.nIndex; } object ai_GetAllyToHealTarget(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION) { - if(AI_DEBUG) ai_Debug("0i_combat", "1192", "Getting the most wounded ally to heal target."); + if(AI_DEBUG) ai_Debug("0i_combat", "1898", "Getting the most wounded ally to heal target."); string sIndex = IntToString(ai_GetAllyToHealIndex(oCreature, fMaxRange)); return GetLocalObject(oCreature, AI_ALLY + sIndex); } @@ -1259,14 +1923,14 @@ object ai_GetLowestFortitudeSaveTarget(object oCreature, float fMaxRange = AI_RA sTarget.oTarget = GetLocalObject(oCreature, AI_ENEMY + sCounter); while(sTarget.oTarget != OBJECT_INVALID) { - if(AI_DEBUG) ai_Debug("0i_combat", "1113", "Getting the lowest fortitude save index: " + + if(AI_DEBUG) ai_Debug("0i_combat", "1915", "Getting the lowest fortitude save index: " + sCounter + " " + GetName(sTarget.oTarget) + " Seen: " + IntToString(GetLocalInt(oCreature, AI_ENEMY_PERCEIVED + sCounter)) + " GetIsDead: " + IntToString(GetIsDead(sTarget.oTarget))); if(GetLocalInt(oCreature, AI_ENEMY_PERCEIVED + sCounter) && !GetIsDead(sTarget.oTarget)) { - if(ai_TargetIsInRangeofCreature(oCreature, AI_ENEMY, sCounter, fMaxRange) + + if(ai_TargetIsInRangeofCreature(oCreature, AI_ENEMY, sCounter, fMaxRange) && ai_TargetIsInRangeofMaster(oCreature, sTarget.oTarget)) { sTarget.nValue = GetFortitudeSavingThrow(sTarget.oTarget); @@ -1278,7 +1942,7 @@ object ai_GetLowestFortitudeSaveTarget(object oCreature, float fMaxRange = AI_RA } // If we do not have a normal target then use our best secondary target. if(sTarget.nIndex == 0 && sTarget.nSecondaryIndex != 0) sTarget.nIndex = sTarget.nSecondaryIndex; - if(AI_DEBUG) ai_Debug("0i_combat", "1232", "Found lowest fortitude save Index: " + IntToString(sTarget.nIndex)); + if(AI_DEBUG) ai_Debug("0i_combat", "1934", "Found lowest fortitude save Index: " + IntToString(sTarget.nIndex)); return GetLocalObject(oCreature, AI_ENEMY + IntToString(sTarget.nIndex)); } object ai_GetLowestReflexSaveTarget(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION) @@ -1294,14 +1958,14 @@ object ai_GetLowestReflexSaveTarget(object oCreature, float fMaxRange = AI_RANGE sTarget.oTarget = GetLocalObject(oCreature, AI_ENEMY + sCounter); while(sTarget.oTarget != OBJECT_INVALID) { - if(AI_DEBUG) ai_Debug("0i_combat", "1248", "Getting the lowest reflex save index: " + + if(AI_DEBUG) ai_Debug("0i_combat", "1950", "Getting the lowest reflex save index: " + sCounter + " " + GetName(sTarget.oTarget) + " Seen: " + IntToString(GetLocalInt(oCreature, AI_ENEMY_PERCEIVED + sCounter)) + " GetIsDead: " + IntToString(GetIsDead(sTarget.oTarget))); if(GetLocalInt(oCreature, AI_ENEMY_PERCEIVED + sCounter) && !GetIsDead(sTarget.oTarget)) { - if(ai_TargetIsInRangeofCreature(oCreature, AI_ENEMY, sCounter, fMaxRange) + + if(ai_TargetIsInRangeofCreature(oCreature, AI_ENEMY, sCounter, fMaxRange) && ai_TargetIsInRangeofMaster(oCreature, sTarget.oTarget)) { sTarget.nValue = GetReflexSavingThrow(sTarget.oTarget); @@ -1313,7 +1977,7 @@ object ai_GetLowestReflexSaveTarget(object oCreature, float fMaxRange = AI_RANGE } // If we do not have a normal target then use our best secondary target. if(sTarget.nIndex == 0 && sTarget.nSecondaryIndex != 0) sTarget.nIndex = sTarget.nSecondaryIndex; - if(AI_DEBUG) ai_Debug("0i_combat", "1269", "Found lowest reflex save Index: " + IntToString(sTarget.nIndex)); + if(AI_DEBUG) ai_Debug("0i_combat", "1969", "Found lowest reflex save Index: " + IntToString(sTarget.nIndex)); return GetLocalObject(oCreature, AI_ENEMY + IntToString(sTarget.nIndex)); } object ai_GetLowestWillSaveTarget(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION) @@ -1329,14 +1993,14 @@ object ai_GetLowestWillSaveTarget(object oCreature, float fMaxRange = AI_RANGE_P sTarget.oTarget = GetLocalObject(oCreature, AI_ENEMY + sCounter); while(sTarget.oTarget != OBJECT_INVALID) { - if(AI_DEBUG) ai_Debug("0i_combat", "1285", "Getting the lowest will save index: " + + if(AI_DEBUG) ai_Debug("0i_combat", "1985", "Getting the lowest will save index: " + sCounter + " " + GetName(sTarget.oTarget) + " Seen: " + IntToString(GetLocalInt(oCreature, AI_ENEMY_PERCEIVED + sCounter)) + " GetIsDead: " + IntToString(GetIsDead(sTarget.oTarget))); if(GetLocalInt(oCreature, AI_ENEMY_PERCEIVED + sCounter) && !GetIsDead(sTarget.oTarget)) { - if(ai_TargetIsInRangeofCreature(oCreature, AI_ENEMY, sCounter, fMaxRange) + + if(ai_TargetIsInRangeofCreature(oCreature, AI_ENEMY, sCounter, fMaxRange) && ai_TargetIsInRangeofMaster(oCreature, sTarget.oTarget)) { sTarget.nValue = GetWillSavingThrow(sTarget.oTarget); @@ -1348,7 +2012,7 @@ object ai_GetLowestWillSaveTarget(object oCreature, float fMaxRange = AI_RANGE_P } // If we do not have a normal target then use our best secondary target. if(sTarget.nIndex == 0 && sTarget.nSecondaryIndex != 0) sTarget.nIndex = sTarget.nSecondaryIndex; - if(AI_DEBUG) ai_Debug("0i_combat", "1306", "Found lowest will save Index: " + IntToString(sTarget.nIndex)); + if(AI_DEBUG) ai_Debug("0i_combat", "2004", "Found lowest will save Index: " + IntToString(sTarget.nIndex)); return GetLocalObject(oCreature, AI_ENEMY + IntToString(sTarget.nIndex)); } object ai_GetSpellTargetBasedOnSaves(object oCreature, int nSpell, float fMaxRange = AI_RANGE_PERCEPTION) @@ -1373,17 +2037,17 @@ int ai_GetNearestIndexThatSeesUs(object oCreature, float fMaxRange = AI_RANGE_PE sTarget.oTarget = GetLocalObject(oCreature, AI_ENEMY + sCounter); while(sTarget.oTarget != OBJECT_INVALID) { - if(AI_DEBUG) ai_Debug("0i_combat", "1334", "Getting the nearest creature that sees us index: " + + if(AI_DEBUG) ai_Debug("0i_combat", "2029", "Getting the nearest creature that sees us index: " + sCounter + " " + GetName(sTarget.oTarget) + " Seen: " + IntToString(GetLocalInt(oCreature, AI_ENEMY_PERCEIVED + sCounter)) + " GetIsDead: " + IntToString(GetIsDead(sTarget.oTarget))); if(GetLocalInt(oCreature, AI_ENEMY_PERCEIVED + sCounter) && !GetIsDead(sTarget.oTarget)) { - if(ai_TargetIsInRangeofCreature(oCreature, AI_ENEMY, sCounter, fMaxRange) + + if(ai_TargetIsInRangeofCreature(oCreature, AI_ENEMY, sCounter, fMaxRange) && ai_TargetIsInRangeofMaster(oCreature, sTarget.oTarget)) { - if(AI_DEBUG) ai_Debug("0i_combat", "1373", GetName(sTarget.oTarget) + " can see us? " + + if(AI_DEBUG) ai_Debug("0i_combat", "2039", GetName(sTarget.oTarget) + " can see us? " + IntToString(GetObjectSeen(oCreature, sTarget.oTarget))); if(GetObjectSeen(oCreature, sTarget.oTarget)) { @@ -1395,7 +2059,7 @@ int ai_GetNearestIndexThatSeesUs(object oCreature, float fMaxRange = AI_RANGE_PE sTarget.oTarget = GetLocalObject(oCreature, AI_ENEMY + sCounter); } // If we do not have a normal target then use our best secondary target. - if(AI_DEBUG) ai_Debug("0i_combat", "1354", "Found nearest creature that sees us Index: " + IntToString(sTarget.nIndex)); + if(AI_DEBUG) ai_Debug("0i_combat", "2051", "Found nearest creature that sees us Index: " + IntToString(sTarget.nIndex)); return sTarget.nIndex; } int ai_GetBestSneakAttackIndex(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, int bAlwaysAtk = TRUE) @@ -1410,7 +2074,7 @@ int ai_GetBestSneakAttackIndex(object oCreature, float fMaxRange = AI_RANGE_PERC sTarget.oTarget = GetLocalObject(oCreature, AI_ENEMY + sCounter); while(sTarget.oTarget != OBJECT_INVALID) { - if(AI_DEBUG) ai_Debug("0i_combat", "1372", "Getting the best sneak attack index: " + + if(AI_DEBUG) ai_Debug("0i_combat", "2066", "Getting the best sneak attack index: " + sCounter + " " + GetName(sTarget.oTarget) + " Seen: " + IntToString(GetLocalInt(oCreature, AI_ENEMY_PERCEIVED + sCounter)) + " GetIsDead: " + IntToString(GetIsDead(sTarget.oTarget))); @@ -1418,11 +2082,15 @@ int ai_GetBestSneakAttackIndex(object oCreature, float fMaxRange = AI_RANGE_PERC !GetIsDead(sTarget.oTarget) && !ai_IsImmuneToSneakAttacks(oCreature, sTarget.oTarget)) { - if(ai_TargetIsInRangeofCreature(oCreature, AI_ENEMY, sCounter, fMaxRange) + + if(AI_DEBUG) ai_Debug("0i_combat", "2074", "bAlwaysAtk: " + IntToString(bAlwaysAtk) + + " Weapon Effective: " + IntToString(GetIsWeaponEffective(sTarget.oTarget))); + if((bAlwaysAtk || !ai_IsStrongerThanMe(oCreature, nCounter)) && + GetIsWeaponEffective(sTarget.oTarget) && + ai_TargetIsInRangeofCreature(oCreature, AI_ENEMY, sCounter, fMaxRange) && ai_TargetIsInRangeofMaster(oCreature, sTarget.oTarget)) { oAttacking = ai_GetAttackedTarget(sTarget.oTarget); - if(AI_DEBUG) ai_Debug("0i_combat", "1383", "oTarget: " + GetName(sTarget.oTarget) + + if(AI_DEBUG) ai_Debug("0i_combat", "2082", "oTarget: " + GetName(sTarget.oTarget) + " is attacking " + GetName(oAttacking)); // They are attacking someone besides us or we are hidden? if((oAttacking != OBJECT_INVALID && oAttacking != oCreature) || @@ -1437,178 +2105,9 @@ int ai_GetBestSneakAttackIndex(object oCreature, float fMaxRange = AI_RANGE_PERC } // If we do not have a normal target then use our best secondary target. if(sTarget.nIndex == 0 && sTarget.nSecondaryIndex != 0) sTarget.nIndex = sTarget.nSecondaryIndex; - if(AI_DEBUG) ai_Debug("0i_combat", "1398", "Found best sneak attack Index: " + IntToString(sTarget.nIndex)); + if(AI_DEBUG) ai_Debug("0i_combat", "2097", "Found best sneak attack Index: " + IntToString(sTarget.nIndex)); return sTarget.nIndex; } -int ai_GetNearestIndexNotInAOE(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY, int bAlwaysAtk = TRUE) -{ - if(GetLocalInt(oCreature, AI_RULE_AI_DIFFICULTY)) - { - ai_GetLowestCRIndexNotInAOE(oCreature, fMaxRange, sTargetType, bAlwaysAtk); - } - struct stTarget sTarget; - sTarget.fNearestRange = fMaxRange + 1.0; - sTarget.fNearestSecondaryRange = sTarget.fNearestRange; - sTarget.sTargetType = AI_ENEMY; - int nCounter = 1; - string sCounter = "1"; - sTarget.oTarget = GetLocalObject(oCreature, AI_ENEMY + sCounter); - while(sTarget.oTarget != OBJECT_INVALID) - { - if(AI_DEBUG) ai_Debug("0i_combat", "1416", "Getting the nearest not in AOE index: " + - sCounter + " " + GetName(sTarget.oTarget) + - " Seen: " + IntToString(GetLocalInt(oCreature, AI_ENEMY_PERCEIVED + sCounter)) + - " GetIsDead: " + IntToString(GetIsDead(sTarget.oTarget))); - if(GetLocalInt(oCreature, AI_ENEMY_PERCEIVED + sCounter) && - !GetIsDead(sTarget.oTarget) && !ai_IsInADangerousAOE(sTarget.oTarget)) - { - if(ai_TargetIsInRangeofCreature(oCreature, AI_ENEMY, sCounter, fMaxRange) + - ai_TargetIsInRangeofMaster(oCreature, sTarget.oTarget)) - { - sTarget = ai_CheckForNearestTarget(oCreature, sTarget, nCounter, sCounter); - } - } - sCounter = IntToString(++nCounter); - sTarget.oTarget = GetLocalObject(oCreature, AI_ENEMY + sCounter); - } - // If we do not have a normal target then use our best secondary target. - if(sTarget.nIndex == 0 && sTarget.nSecondaryIndex != 0) sTarget.nIndex = sTarget.nSecondaryIndex; - if(AI_DEBUG) ai_Debug("0i_combat", "1434", "Found nearest not in AOE Index: " + IntToString(sTarget.nIndex)); - return sTarget.nIndex; -} -object ai_GetNearestTargetNotInAOE(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY, int bAlwaysAtk = TRUE) -{ - if(AI_DEBUG) ai_Debug("0i_combat", "1439", "Getting the nearest not in AOE target."); - string sIndex = IntToString(ai_GetNearestIndexNotInAOE(oCreature, fMaxRange, sTargetType, bAlwaysAtk)); - return GetLocalObject(oCreature, sTargetType + sIndex); -} -int ai_GetLowestCRIndexNotInAOE(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY, int bAlwaysAtk = TRUE) -{ - struct stTarget sTarget; - sTarget.fNearestRange = fMaxRange + 1.0; - sTarget.fNearestSecondaryRange = sTarget.fNearestRange; - sTarget.nBestValue = 100; - sTarget.nBestSecondaryValue = 100; - sTarget.sTargetType = sTargetType; - int nCounter = 1; - string sCounter = "1"; - sTarget.oTarget = GetLocalObject(oCreature, sTargetType + sCounter); - while(sTarget.oTarget != OBJECT_INVALID) - { - if(AI_DEBUG) ai_Debug("0i_combat", "1456", "Getting the lowest CR not in AOE index: " + - sCounter + " " + GetName(sTarget.oTarget) + - " Seen: " + IntToString(GetLocalInt(oCreature, sTargetType + "_PERCEIVED" + sCounter)) + - " GetIsDead: " + IntToString(GetIsDead(sTarget.oTarget))); - if(GetLocalInt(oCreature, sTargetType + "_PERCEIVED" + sCounter) && - !GetIsDead(sTarget.oTarget) && !ai_IsInADangerousAOE(sTarget.oTarget)) - { - if(AI_DEBUG) ai_Debug("0i_combat", "1463", "bAlwaysAtk: " + IntToString(bAlwaysAtk)); - if((bAlwaysAtk || !ai_IsStrongerThanMe(oCreature, nCounter)) && - ai_TargetIsInRangeofCreature(oCreature, sTargetType, sCounter, fMaxRange) && - ai_TargetIsInRangeofMaster(oCreature, sTarget.oTarget)) - { - sTarget.nValue = GetLocalInt(oCreature, sTargetType + "_COMBAT" + sCounter); - sTarget = ai_CheckForLowestValueTarget(oCreature, sTarget, nCounter, sCounter); - } - } - sCounter = IntToString(++nCounter); - sTarget.oTarget = GetLocalObject(oCreature, sTargetType + sCounter); - } - // If we do not have a normal target then use our best secondary target. - if(sTarget.nIndex == 0 && sTarget.nSecondaryIndex != 0) sTarget.nIndex = sTarget.nSecondaryIndex; - if(AI_DEBUG) ai_Debug("0i_combat", "1477", "Found lowest CR not in AOE [" + sTargetType + "] Index: " + IntToString(sTarget.nIndex)); - return sTarget.nIndex; -} -object ai_GetLowestTargetNotInAOE(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY, int bAlwaysAtk = TRUE) -{ - if(AI_DEBUG) ai_Debug("0i_combat", "1482", "Getting the lowest cr not in AOE target."); - string sIndex = IntToString(ai_GetLowestCRIndexNotInAOE(oCreature, fMaxRange, sTargetType, bAlwaysAtk)); - return GetLocalObject(oCreature, sTargetType + sIndex); -} -int ai_GetHighestCRIndexNotInAOE(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY, int bAlwaysAtk = TRUE) -{ - struct stTarget sTarget; - sTarget.fNearestRange = fMaxRange + 1.0; - sTarget.fNearestSecondaryRange = sTarget.fNearestRange; - sTarget.nBestValue = -100; - sTarget.nBestSecondaryValue = -100; - sTarget.sTargetType = sTargetType; - int nCounter = 1; - string sCounter = "1"; - sTarget.oTarget = GetLocalObject(oCreature, sTargetType + sCounter); - while(sTarget.oTarget != OBJECT_INVALID) - { - if(AI_DEBUG) ai_Debug("0i_combat", "1499", "Getting the highest CR not in AOE index: " + - sCounter + " " + GetName(sTarget.oTarget) + - " Seen: " + IntToString(GetLocalInt(oCreature, sTargetType + "_PERCEIVED" + sCounter)) + - " GetIsDead: " + IntToString(GetIsDead(sTarget.oTarget))); - if(GetLocalInt(oCreature, sTargetType + "_PERCEIVED" + sCounter) && - !GetIsDead(sTarget.oTarget) && !ai_IsInADangerousAOE(sTarget.oTarget)) - { - if(AI_DEBUG) ai_Debug("0i_combat", "1506", "bAlwaysAtk: " + IntToString(bAlwaysAtk)); - if((bAlwaysAtk || !ai_IsStrongerThanMe(oCreature, nCounter)) && - ai_TargetIsInRangeofCreature(oCreature, sTargetType, sCounter, fMaxRange) && - ai_TargetIsInRangeofMaster(oCreature, sTarget.oTarget)) - { - sTarget.nValue = GetLocalInt(oCreature, sTargetType + "_COMBAT" + sCounter); - sTarget = ai_CheckForHighestValueTarget(oCreature, sTarget, nCounter, sCounter); - } - } - sCounter = IntToString(++nCounter); - sTarget.oTarget = GetLocalObject(oCreature, sTargetType + sCounter); - } - // If we do not have a normal target then use our best secondary target. - if(sTarget.nIndex == 0 && sTarget.nSecondaryIndex != 0) sTarget.nIndex = sTarget.nSecondaryIndex; - if(AI_DEBUG) ai_Debug("0i_combat", "1520", "Found highest CR not in AOE [" + sTargetType + "] Index: " + IntToString(sTarget.nIndex)); - return sTarget.nIndex; -} -object ai_GetHighestTargetNotInAOE(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY, int bAlwaysAtk = TRUE) -{ - if(AI_DEBUG) ai_Debug("0i_combat", "1525", "Getting the highest cr not in AOE target."); - string sIndex = IntToString(ai_GetHighestCRIndexNotInAOE(oCreature, fMaxRange, sTargetType, bAlwaysAtk)); - return GetLocalObject(oCreature, sTargetType + sIndex); -} -int ai_GetHighestMeleeIndexNotInAOE(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY) -{ - struct stTarget sTarget; - sTarget.fNearestRange = fMaxRange + 1.0; - sTarget.fNearestSecondaryRange = sTarget.fNearestRange; - sTarget.nBestValue = -100; - sTarget.nBestSecondaryValue = -100; - sTarget.sTargetType = sTargetType; - int nCounter = 1; - string sCounter = "1"; - sTarget.oTarget = GetLocalObject(oCreature, sTargetType + sCounter); - while(sTarget.oTarget != OBJECT_INVALID) - { - if(AI_DEBUG) ai_Debug("0i_combat", "1542", "Getting the highest InMelee not in AOE index: " + - sCounter + " " + GetName(sTarget.oTarget) + - " Seen: " + IntToString(GetLocalInt(oCreature, sTargetType + "_PERCEIVED" + sCounter)) + - " GetIsDead: " + IntToString(GetIsDead(sTarget.oTarget))); - if(GetLocalInt(oCreature, sTargetType + "_PERCEIVED" + sCounter) && - !GetIsDead(sTarget.oTarget) && !ai_IsInADangerousAOE(sTarget.oTarget)) - { - if(ai_TargetIsInRangeofCreature(oCreature, sTargetType, sCounter, fMaxRange) && - ai_TargetIsInRangeofMaster(oCreature, sTarget.oTarget)) - { - sTarget.nValue = GetLocalInt(oCreature, sTargetType + "_MELEE" + sCounter); - sTarget = ai_CheckForHighestValueTarget(oCreature, sTarget, nCounter, sCounter); - } - } - sCounter = IntToString(++nCounter); - sTarget.oTarget = GetLocalObject(oCreature, sTargetType + sCounter); - } - // If we do not have a normal target then use our best secondary target. - if(sTarget.nIndex == 0 && sTarget.nSecondaryIndex != 0) sTarget.nIndex = sTarget.nSecondaryIndex; - if(AI_DEBUG) ai_Debug("0i_combat", "1563", "Found highest InMelee not in AOE [" + sTargetType + "] Index: " + IntToString(sTarget.nIndex)); - return sTarget.nIndex; -} -object ai_CheckForGroupedTargetNotInAOE(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY) -{ - if(AI_DEBUG) ai_Debug("0i_combat", "1574", "Getting the highest InMelee not in AOE target."); - string sIndex = IntToString(ai_GetHighestMeleeIndexNotInAOE(oCreature, fMaxRange, sTargetType)); - return GetLocalObject(oCreature, sTargetType + sIndex); -} object ai_GetNearestClassTarget(object oCreature, int nClassType, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY, int bAlwaysAtk = TRUE) { if(GetLocalInt(oCreature, AI_RULE_AI_DIFFICULTY)) @@ -1624,15 +2123,17 @@ object ai_GetNearestClassTarget(object oCreature, int nClassType, float fMaxRang sTarget.oTarget = GetLocalObject(oCreature, sTargetType + sCounter); while(sTarget.oTarget != OBJECT_INVALID) { - if(AI_DEBUG) ai_Debug("0i_combat", "1591", "Getting the nearest class index: " + + if(AI_DEBUG) ai_Debug("0i_combat", "2115", "Getting the nearest class index: " + sCounter + " " + GetName(sTarget.oTarget) + " Seen: " + IntToString(GetLocalInt(oCreature, sTargetType + "_PERCEIVED" + sCounter)) + " GetIsDead: " + IntToString(GetIsDead(sTarget.oTarget))); if(GetLocalInt(oCreature, sTargetType + "_PERCEIVED" + sCounter) && !GetIsDead(sTarget.oTarget) && ai_CheckClassType(sTarget.oTarget, nClassType)) { - if(AI_DEBUG) ai_Debug("0i_combat", "1598", "bAlwaysAtk: " + IntToString(bAlwaysAtk)); + if(AI_DEBUG) ai_Debug("0i_combat", "2122", "bAlwaysAtk: " + IntToString(bAlwaysAtk) + + " Weapon Effective: " + IntToString(GetIsWeaponEffective(sTarget.oTarget))); if((bAlwaysAtk || !ai_IsStrongerThanMe(oCreature, nCounter)) && + GetIsWeaponEffective(sTarget.oTarget) && ai_TargetIsInRangeofCreature(oCreature, sTargetType, sCounter, fMaxRange) && ai_TargetIsInRangeofMaster(oCreature, sTarget.oTarget)) { @@ -1644,7 +2145,7 @@ object ai_GetNearestClassTarget(object oCreature, int nClassType, float fMaxRang } // If we do not have a normal target then use our best secondary target. if(sTarget.nIndex == 0 && sTarget.nSecondaryIndex != 0) sTarget.nIndex = sTarget.nSecondaryIndex; - if(AI_DEBUG) ai_Debug("0i_combat", "1611", "Found nearest class Index: " + IntToString(sTarget.nIndex)); + if(AI_DEBUG) ai_Debug("0i_combat", "2137", "Found nearest class Index: " + IntToString(sTarget.nIndex)); return GetLocalObject(oCreature, sTargetType + IntToString(sTarget.nIndex)); } object ai_GetLowestCRClassTarget(object oCreature, int nClassType, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY, int bAlwaysAtk = TRUE) @@ -1660,15 +2161,17 @@ object ai_GetLowestCRClassTarget(object oCreature, int nClassType, float fMaxRan sTarget.oTarget = GetLocalObject(oCreature, sTargetType + sCounter); while(sTarget.oTarget != OBJECT_INVALID) { - if(AI_DEBUG) ai_Debug("0i_combat", "1626", "Getting the lowest CR class index: " + + if(AI_DEBUG) ai_Debug("0i_combat", "2153", "Getting the lowest CR class index: " + sCounter + " " + GetName(sTarget.oTarget) + " Seen: " + IntToString(GetLocalInt(oCreature, sTargetType + "_PERCEIVED" + sCounter)) + " GetIsDead: " + IntToString(GetIsDead(sTarget.oTarget))); if(GetLocalInt(oCreature, sTargetType + "_PERCEIVED" + sCounter) && !GetIsDead(sTarget.oTarget) && ai_CheckClassType(sTarget.oTarget, nClassType)) { - if(AI_DEBUG) ai_Debug("0i_combat", "1634", "bAlwaysAtk: " + IntToString(bAlwaysAtk)); + if(AI_DEBUG) ai_Debug("0i_combat", "2160", "bAlwaysAtk: " + IntToString(bAlwaysAtk) + + " Weapon Effective: " + IntToString(GetIsWeaponEffective(sTarget.oTarget))); if((bAlwaysAtk || !ai_IsStrongerThanMe(oCreature, nCounter)) && + GetIsWeaponEffective(sTarget.oTarget) && ai_TargetIsInRangeofCreature(oCreature, sTargetType, sCounter, fMaxRange) && ai_TargetIsInRangeofMaster(oCreature, sTarget.oTarget)) { @@ -1681,7 +2184,7 @@ object ai_GetLowestCRClassTarget(object oCreature, int nClassType, float fMaxRan } // If we do not have a normal target then use our best secondary target. if(sTarget.nIndex == 0 && sTarget.nSecondaryIndex != 0) sTarget.nIndex = sTarget.nSecondaryIndex; - if(AI_DEBUG) ai_Debug("0i_combat", "1648", "Found lowest CR class [" + sTargetType + "] Index: " + IntToString(sTarget.nIndex)); + if(AI_DEBUG) ai_Debug("0i_combat", "2176", "Found lowest CR class [" + sTargetType + "] Index: " + IntToString(sTarget.nIndex)); return GetLocalObject(oCreature, sTargetType + IntToString(sTarget.nIndex)); } object ai_GetHighestCRClassTarget(object oCreature, int nClassType, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY, int bAlwaysAtk = TRUE) @@ -1697,15 +2200,17 @@ object ai_GetHighestCRClassTarget(object oCreature, int nClassType, float fMaxRa sTarget.oTarget = GetLocalObject(oCreature, sTargetType + sCounter); while(sTarget.oTarget != OBJECT_INVALID) { - if(AI_DEBUG) ai_Debug("0i_combat", "1664", "Getting the highest CR class index: " + + if(AI_DEBUG) ai_Debug("0i_combat", "2192", "Getting the highest CR class index: " + sCounter + " " + GetName(sTarget.oTarget) + " Seen: " + IntToString(GetLocalInt(oCreature, sTargetType + "_PERCEIVED" + sCounter)) + " GetIsDead: " + IntToString(GetIsDead(sTarget.oTarget))); if(GetLocalInt(oCreature, sTargetType + "_PERCEIVED" + sCounter) && !GetIsDead(sTarget.oTarget) && ai_CheckClassType(sTarget.oTarget, nClassType)) { - if(AI_DEBUG) ai_Debug("0i_combat", "1671", "bAlwaysAtk: " + IntToString(bAlwaysAtk)); + if(AI_DEBUG) ai_Debug("0i_combat", "2199", "bAlwaysAtk: " + IntToString(bAlwaysAtk) + + " Weapon Effective: " + IntToString(GetIsWeaponEffective(sTarget.oTarget))); if((bAlwaysAtk || !ai_IsStrongerThanMe(oCreature, nCounter)) && + GetIsWeaponEffective(sTarget.oTarget) && ai_TargetIsInRangeofCreature(oCreature, sTargetType, sCounter, fMaxRange) && ai_TargetIsInRangeofMaster(oCreature, sTarget.oTarget)) { @@ -1718,7 +2223,7 @@ object ai_GetHighestCRClassTarget(object oCreature, int nClassType, float fMaxRa } // If we do not have a normal target then use our best secondary target. if(sTarget.nIndex == 0 && sTarget.nSecondaryIndex != 0) sTarget.nIndex = sTarget.nSecondaryIndex; - if(AI_DEBUG) ai_Debug("0i_combat", "1685", "Found highest CR class [" + sTargetType + "] Index: " + IntToString(sTarget.nIndex)); + if(AI_DEBUG) ai_Debug("0i_combat", "2215", "Found highest CR class [" + sTargetType + "] Index: " + IntToString(sTarget.nIndex)); return GetLocalObject(oCreature, sTargetType + IntToString(sTarget.nIndex)); } object ai_GetNearestRacialTarget(object oCreature, int nRacialType, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY, int bAlwaysAtk = TRUE) @@ -1736,15 +2241,17 @@ object ai_GetNearestRacialTarget(object oCreature, int nRacialType, float fMaxRa sTarget.oTarget = GetLocalObject(oCreature, sTargetType + sCounter); while(sTarget.oTarget != OBJECT_INVALID) { - if(AI_DEBUG) ai_Debug("0i_combat", "1703", "Getting the nearest race index: " + + if(AI_DEBUG) ai_Debug("0i_combat", "2233", "Getting the nearest race index: " + sCounter + " " + GetName(sTarget.oTarget) + " Seen: " + IntToString(GetLocalInt(oCreature, sTargetType + "_PERCEIVED" + sCounter)) + " GetIsDead: " + IntToString(GetIsDead(sTarget.oTarget))); if(GetLocalInt(oCreature, sTargetType + "_PERCEIVED" + sCounter) && !GetIsDead(sTarget.oTarget) && ai_CheckRacialType(sTarget.oTarget, nRacialType)) { - if(AI_DEBUG) ai_Debug("0i_combat", "1710", "bAlwaysAtk: " + IntToString(bAlwaysAtk)); + if(AI_DEBUG) ai_Debug("0i_combat", "2240", "bAlwaysAtk: " + IntToString(bAlwaysAtk) + + " Weapon Effective: " + IntToString(GetIsWeaponEffective(sTarget.oTarget))); if((bAlwaysAtk || !ai_IsStrongerThanMe(oCreature, nCounter)) && + GetIsWeaponEffective(sTarget.oTarget) && ai_TargetIsInRangeofCreature(oCreature, sTargetType, sCounter, fMaxRange) && ai_TargetIsInRangeofMaster(oCreature, sTarget.oTarget)) { @@ -1756,7 +2263,7 @@ object ai_GetNearestRacialTarget(object oCreature, int nRacialType, float fMaxRa } // If we do not have a normal target then use our best secondary target. if(sTarget.nIndex == 0 && sTarget.nSecondaryIndex != 0) sTarget.nIndex = sTarget.nSecondaryIndex; - if(AI_DEBUG) ai_Debug("0i_combat", "1723", "Found nearest race Index: " + IntToString(sTarget.nIndex)); + if(AI_DEBUG) ai_Debug("0i_combat", "2255", "Found nearest race Index: " + IntToString(sTarget.nIndex)); return GetLocalObject(oCreature, sTargetType + IntToString(sTarget.nIndex)); } object ai_GetLowestCRRacialTarget(object oCreature, int nRacialType, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY, int bAlwaysAtk = TRUE) @@ -1772,15 +2279,17 @@ object ai_GetLowestCRRacialTarget(object oCreature, int nRacialType, float fMaxR sTarget.oTarget = GetLocalObject(oCreature, sTargetType + sCounter); while(sTarget.oTarget != OBJECT_INVALID) { - if(AI_DEBUG) ai_Debug("0i_combat", "1739", "Getting the lowest CR race index: " + + if(AI_DEBUG) ai_Debug("0i_combat", "2271", "Getting the lowest CR race index: " + sCounter + " " + GetName(sTarget.oTarget) + " Seen: " + IntToString(GetLocalInt(oCreature, sTargetType + "_PERCEIVED" + sCounter)) + " GetIsDead: " + IntToString(GetIsDead(sTarget.oTarget))); if(GetLocalInt(oCreature, sTargetType + "_PERCEIVED" + sCounter) && !GetIsDead(sTarget.oTarget) && ai_CheckRacialType(sTarget.oTarget, nRacialType)) { - if(AI_DEBUG) ai_Debug("0i_combat", "1746", "bAlwaysAtk: " + IntToString(bAlwaysAtk)); + if(AI_DEBUG) ai_Debug("0i_combat", "2278", "bAlwaysAtk: " + IntToString(bAlwaysAtk) + + " Weapon Effective: " + IntToString(GetIsWeaponEffective(sTarget.oTarget))); if((bAlwaysAtk || !ai_IsStrongerThanMe(oCreature, nCounter)) && + GetIsWeaponEffective(sTarget.oTarget) && ai_TargetIsInRangeofCreature(oCreature, sTargetType, sCounter, fMaxRange) && ai_TargetIsInRangeofMaster(oCreature, sTarget.oTarget)) { @@ -1793,7 +2302,7 @@ object ai_GetLowestCRRacialTarget(object oCreature, int nRacialType, float fMaxR } // If we do not have a normal target then use our best secondary target. if(sTarget.nIndex == 0 && sTarget.nSecondaryIndex != 0) sTarget.nIndex = sTarget.nSecondaryIndex; - if(AI_DEBUG) ai_Debug("0i_combat", "1760", "Found lowest CR race [" + sTargetType + "] Index: " + IntToString(sTarget.nIndex)); + if(AI_DEBUG) ai_Debug("0i_combat", "2294", "Found lowest CR race [" + sTargetType + "] Index: " + IntToString(sTarget.nIndex)); return GetLocalObject(oCreature, sTargetType + IntToString(sTarget.nIndex)); } object ai_GetHighestCRRacialTarget(object oCreature, int nRacialType, float fMaxRange = AI_RANGE_PERCEPTION, string sTargetType = AI_ENEMY, int bAlwaysAtk = TRUE) @@ -1809,15 +2318,17 @@ object ai_GetHighestCRRacialTarget(object oCreature, int nRacialType, float fMax sTarget.oTarget = GetLocalObject(oCreature, sTargetType + sCounter); while(sTarget.oTarget != OBJECT_INVALID) { - if(AI_DEBUG) ai_Debug("0i_combat", "1776", "Getting the highest CR race index: " + + if(AI_DEBUG) ai_Debug("0i_combat", "2310", "Getting the highest CR race index: " + sCounter + " " + GetName(sTarget.oTarget) + " Seen: " + IntToString(GetLocalInt(oCreature, sTargetType + "_PERCEIVED" + sCounter)) + " GetIsDead: " + IntToString(GetIsDead(sTarget.oTarget))); if(GetLocalInt(oCreature, sTargetType + "_PERCEIVED" + sCounter) && !GetIsDead(sTarget.oTarget) && ai_CheckRacialType(sTarget.oTarget, nRacialType)) { - if(AI_DEBUG) ai_Debug("0i_combat", "1783", "bAlwaysAtk: " + IntToString(bAlwaysAtk)); + if(AI_DEBUG) ai_Debug("0i_combat", "2317", "bAlwaysAtk: " + IntToString(bAlwaysAtk) + + " Weapon Effective: " + IntToString(GetIsWeaponEffective(sTarget.oTarget))); if((bAlwaysAtk || !ai_IsStrongerThanMe(oCreature, nCounter)) && + GetIsWeaponEffective(sTarget.oTarget) && ai_TargetIsInRangeofCreature(oCreature, sTargetType, sCounter, fMaxRange) && ai_TargetIsInRangeofMaster(oCreature, sTarget.oTarget)) { @@ -1830,7 +2341,7 @@ object ai_GetHighestCRRacialTarget(object oCreature, int nRacialType, float fMax } // If we do not have a normal target then use our best secondary target. if(sTarget.nIndex == 0 && sTarget.nSecondaryIndex != 0) sTarget.nIndex = sTarget.nSecondaryIndex; - if(AI_DEBUG) ai_Debug("0i_combat", "1797", "Found highest CR race [" + sTargetType + "] Index: " + IntToString(sTarget.nIndex)); + if(AI_DEBUG) ai_Debug("0i_combat", "2333", "Found highest CR race [" + sTargetType + "] Index: " + IntToString(sTarget.nIndex)); return GetLocalObject(oCreature, sTargetType + IntToString(sTarget.nIndex)); } object ai_GetNearestFavoredEnemyTarget(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, int bAlwaysAtk = TRUE) @@ -1973,16 +2484,18 @@ object ai_GetNearestFavoredEnemyTarget(object oCreature, float fMaxRange = AI_RA sTarget.oTarget = GetLocalObject(oCreature, AI_ENEMY + sCounter); while(sTarget.oTarget != OBJECT_INVALID) { - if(AI_DEBUG) ai_Debug("0i_combat", "1940", "Getting the nearest favored race index: " + + if(AI_DEBUG) ai_Debug("0i_combat", "2476", "Getting the nearest favored race index: " + sCounter + " " + GetName(sTarget.oTarget) + " Seen: " + IntToString(GetLocalInt(oCreature, AI_ENEMY_PERCEIVED + sCounter)) + " GetIsDead: " + IntToString(GetIsDead(sTarget.oTarget))); if(GetLocalInt(oCreature, AI_ENEMY_PERCEIVED + sCounter) && !GetIsDead(sTarget.oTarget) && ai_CheckRacialType(sTarget.oTarget, nRacialType)) { - if(AI_DEBUG) ai_Debug("0i_combat", "1947", "bAlwaysAtk: " + IntToString(bAlwaysAtk)); + if(AI_DEBUG) ai_Debug("0i_combat", "2483", "bAlwaysAtk: " + IntToString(bAlwaysAtk) + + " Weapon Effective: " + IntToString(GetIsWeaponEffective(sTarget.oTarget))); if((bAlwaysAtk || !ai_IsStrongerThanMe(oCreature, nCounter)) && - ai_TargetIsInRangeofCreature(oCreature, AI_ENEMY, sCounter, fMaxRange) + + GetIsWeaponEffective(sTarget.oTarget) && + ai_TargetIsInRangeofCreature(oCreature, AI_ENEMY, sCounter, fMaxRange) && ai_TargetIsInRangeofMaster(oCreature, sTarget.oTarget)) { sTarget = ai_CheckForNearestTarget(oCreature, sTarget, nCounter, sCounter); @@ -1995,7 +2508,7 @@ object ai_GetNearestFavoredEnemyTarget(object oCreature, float fMaxRange = AI_RA } // If we do not have a normal target then use our best secondary target. if(sTarget.nIndex == 0 && sTarget.nSecondaryIndex != 0) sTarget.nIndex = sTarget.nSecondaryIndex; - if(AI_DEBUG) ai_Debug("0i_combat", "1962", "Found nearest favored race Index: " + IntToString(sTarget.nIndex)); + if(AI_DEBUG) ai_Debug("0i_combat", "2500", "Found nearest favored race Index: " + IntToString(sTarget.nIndex)); return GetLocalObject(oCreature, AI_ENEMY + IntToString(sTarget.nIndex)); } object ai_GetFlankTarget(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION, int bAlwaysAtk = TRUE) @@ -2007,17 +2520,23 @@ object ai_GetFlankTarget(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION while(oAlly != OBJECT_INVALID) { fAllyRange = GetLocalFloat(oCreature, AI_ALLY_RANGE + sCnt); - if(AI_DEBUG) ai_Debug("0i_combat", "1974", "Getting Ally being Flanked Index: " + sCnt + " " + + if(AI_DEBUG) ai_Debug("0i_combat", "2512", "Getting Ally being Flanked Index: " + sCnt + " " + GetName(oAlly) + " fAllyRange: " + FloatToString(fAllyRange, 0, 2) + " fMaxRange: " + FloatToString(fMaxRange, 0, 2)); if(fAllyRange <= fMaxRange) { nInMelee = GetLocalInt(oCreature, AI_ALLY_MELEE + sCnt); - if(AI_DEBUG) ai_Debug("0i_combat", "1980", "nInMelee: " + IntToString(nInMelee)); + if(AI_DEBUG) ai_Debug("0i_combat", "2519", "nInMelee: " + IntToString(nInMelee)); if(!GetIsDead(oAlly) && nInMelee > nHighestMelee) { - oTarget = ai_GetEnemyAttackingMyAlly(oCreature, oAlly, fMaxRange); - if(oTarget != OBJECT_INVALID) nHighestMelee = nInMelee; + if(AI_DEBUG) ai_Debug("0i_combat", "2521", "bAlwaysAtk: " + IntToString(bAlwaysAtk) + + " Weapon Effective: " + IntToString(GetIsWeaponEffective(oTarget))); + if((bAlwaysAtk || !ai_IsStrongerThanMe(oCreature, nCnt)) && + GetIsWeaponEffective(oTarget)) + { + oTarget = ai_GetEnemyAttackingMyAlly(oCreature, oAlly, fMaxRange); + if(oTarget != OBJECT_INVALID) nHighestMelee = nInMelee; + } } } sCnt = IntToString(++nCnt); @@ -2028,12 +2547,12 @@ object ai_GetFlankTarget(object oCreature, float fMaxRange = AI_RANGE_PERCEPTION { // If we just checked within melee then lets check what we can see if // we can move around in combat. - if (fMaxRange == AI_RANGE_MELEE && ai_CanIMoveInCombat(oCreature)) + if(fMaxRange == AI_RANGE_MELEE && ai_CanIMoveInCombat(oCreature)) { oTarget = ai_GetFlankTarget(oCreature, AI_RANGE_PERCEPTION, bAlwaysAtk); } } - if(AI_DEBUG) ai_Debug("0i_combat", "2000", "oTarget " + GetName(oTarget) + + if(AI_DEBUG) ai_Debug("0i_combat", "2544", "oTarget " + GetName(oTarget) + " is attacking " + GetName(oAlly)); return oTarget; } @@ -2048,15 +2567,17 @@ object ai_GetRangedTarget(object oCreature, float fMaxRange = AI_RANGE_PERCEPTIO sTarget.oTarget = GetLocalObject(oCreature, AI_ENEMY + sCounter); while(sTarget.oTarget != OBJECT_INVALID) { - if(AI_DEBUG) ai_Debug("0i_combat", "2037", "Getting the nearest ranged index: " + + if(AI_DEBUG) ai_Debug("0i_combat", "2559", "Getting the nearest ranged index: " + sCounter + " " + GetName(sTarget.oTarget) + " Seen: " + IntToString(GetLocalInt(oCreature, AI_ENEMY_PERCEIVED + sCounter)) + " GetIsDead: " + IntToString(GetIsDead(sTarget.oTarget))); if(GetLocalInt(oCreature, AI_ENEMY_PERCEIVED + sCounter) && !GetIsDead(sTarget.oTarget)) { - if(AI_DEBUG) ai_Debug("0i_combat", "2044", "bAlwaysAtk: " + IntToString(bAlwaysAtk)); + if(AI_DEBUG) ai_Debug("0i_combat", "2566", "bAlwaysAtk: " + IntToString(bAlwaysAtk) + + " Weapon Effective: " + IntToString(GetIsWeaponEffective(sTarget.oTarget))); if((bAlwaysAtk || !ai_IsStrongerThanMe(oCreature, nCounter)) && + GetIsWeaponEffective(sTarget.oTarget) && ai_TargetIsInRangeofCreature(oCreature, AI_ENEMY, sCounter, fMaxRange) && ai_TargetIsInRangeofMaster(oCreature, sTarget.oTarget)) { @@ -2071,7 +2592,7 @@ object ai_GetRangedTarget(object oCreature, float fMaxRange = AI_RANGE_PERCEPTIO } // If we do not have a normal target then use our best secondary target. if(sTarget.nIndex == 0 && sTarget.nSecondaryIndex != 0) sTarget.nIndex = sTarget.nSecondaryIndex; - if(AI_DEBUG) ai_Debug("0i_combat", "2060", "Found nearest ranged Index: " + IntToString(sTarget.nIndex)); + if(AI_DEBUG) ai_Debug("0i_combat", "2584", "Found nearest ranged Index: " + IntToString(sTarget.nIndex)); return GetLocalObject(oCreature, AI_ENEMY + IntToString(sTarget.nIndex)); } object ai_GetBestTargetForMeleeCombat(object oCreature, int nInMelee, int bAlwaysAtk = TRUE) @@ -2084,25 +2605,24 @@ object ai_GetBestTargetForMeleeCombat(object oCreature, int nInMelee, int bAlway { if(ai_CanIMoveInCombat(oCreature)) { - sIndex = IntToString(ai_GetLowestCRIndex(oCreature, AI_RANGE_MELEE)); + sIndex = IntToString(ai_GetLowestCRPhysicalIndex(oCreature, AI_RANGE_MELEE)); } - else sIndex = IntToString(ai_GetNearestIndex(oCreature, AI_RANGE_MELEE)); + else sIndex = IntToString(ai_GetNearestPhysicalIndex(oCreature, AI_RANGE_MELEE)); } // If not then lets go find someone to attack! else { // If we are not in melee then we should get the nearest enemy. - sIndex = IntToString(ai_GetNearestIndexNotInAOE(oCreature, AI_RANGE_PERCEPTION, AI_ENEMY, bAlwaysAtk)); - /* Lets stay out of bad AOE's. + sIndex = IntToString(ai_GetNearestPhysicalIndexNotInAOE(oCreature, AI_RANGE_PERCEPTION, AI_ENEMY, bAlwaysAtk)); // If we didn't get a target then get any target within range. if(sIndex == "0") { - sIndex = IntToString(ai_GetLowestCRIndex(oCreature, AI_RANGE_PERCEPTION, AI_ENEMY, bAlwaysAtk)); - } */ + sIndex = IntToString(ai_GetLowestCRPhysicalIndex(oCreature, AI_RANGE_PERCEPTION, AI_ENEMY, bAlwaysAtk)); + } } object oTarget = GetLocalObject(oCreature, AI_ENEMY + sIndex); // We might not have a target this is fine as sometimes we don't want to attack! - if(AI_DEBUG) ai_Debug("0i_combat", "2048", GetName(oTarget) + " is the best target for melee combat!"); + if(AI_DEBUG) ai_Debug("0i_combat", "2614", GetName(oTarget) + " is the best target for melee combat!"); return oTarget; } object ai_GetNearestTargetForMeleeCombat(object oCreature, int nInMelee, int bAlwaysAtk = TRUE) @@ -2111,21 +2631,23 @@ object ai_GetNearestTargetForMeleeCombat(object oCreature, int nInMelee, int bAl if(oPCTarget != OBJECT_INVALID) return oPCTarget; string sIndex; // Are we in melee? If so try to get the nearest enemy in melee. - if(nInMelee > 0) sIndex = IntToString(ai_GetNearestIndex(oCreature, AI_RANGE_MELEE)); + if(nInMelee > 0) sIndex = IntToString(ai_GetNearestPhysicalIndex(oCreature, AI_RANGE_MELEE)); // If not then lets go find someone to attack! else { // Get the nearest enemy. - sIndex = IntToString(ai_GetNearestIndexNotInAOE(oCreature, AI_RANGE_PERCEPTION, AI_ENEMY, bAlwaysAtk)); + sIndex = IntToString(ai_GetNearestPhysicalIndexNotInAOE(oCreature, AI_RANGE_PERCEPTION, AI_ENEMY, bAlwaysAtk)); // If we didn't get a target then get any target within range. if(sIndex == "0") { - sIndex = IntToString(ai_GetNearestIndex(oCreature, AI_RANGE_PERCEPTION, AI_ENEMY, bAlwaysAtk)); + sIndex = IntToString(ai_GetNearestPhysicalIndex(oCreature, AI_RANGE_PERCEPTION, AI_ENEMY, bAlwaysAtk)); } } object oTarget = GetLocalObject(oCreature, AI_ENEMY + sIndex); + // If we don't have a target lets try one last time and see if we can find one. + if(oTarget == OBJECT_INVALID) oTarget = ai_GetNearestPhysicalTarget(oCreature, AI_RANGE_PERCEPTION, AI_ENEMY, bAlwaysAtk); // We might not have a target this is fine as sometimes we don't want to attack! - if(AI_DEBUG) ai_Debug("0i_combat", "2024", GetName(oTarget) + " is the nearest target for melee combat!"); + if(AI_DEBUG) ai_Debug("0i_combat", "2637", GetName(oTarget) + " is the nearest target for melee combat!"); return oTarget; } object ai_GetLowestCRTargetForMeleeCombat(object oCreature, int nInMelee, int bAlwaysAtk = TRUE) @@ -2134,22 +2656,23 @@ object ai_GetLowestCRTargetForMeleeCombat(object oCreature, int nInMelee, int bA if(oPCTarget != OBJECT_INVALID) return oPCTarget; string sIndex; // Are we in melee? If so try to get the weakest enemy in melee. - if(nInMelee > 0) sIndex = IntToString(ai_GetLowestCRIndex(oCreature, AI_RANGE_MELEE)); + if(nInMelee > 0) sIndex = IntToString(ai_GetLowestCRPhysicalIndex(oCreature, AI_RANGE_MELEE)); // If not then lets go find someone to attack! else { // Get the weakest combat rated enemy. - sIndex = IntToString(ai_GetLowestCRIndexNotInAOE(oCreature, AI_RANGE_PERCEPTION, AI_ENEMY, bAlwaysAtk)); - /* Lets stay out of bad AOE's. + sIndex = IntToString(ai_GetLowestCRPhysicalIndexNotInAOE(oCreature, AI_RANGE_PERCEPTION, AI_ENEMY, bAlwaysAtk)); // If we didn't get a target then get any target within range. if(sIndex == "0") { - sIndex = IntToString(ai_GetLowestCRIndex(oCreature, AI_RANGE_PERCEPTION, AI_ENEMY, bAlwaysAtk)); - } */ + sIndex = IntToString(ai_GetLowestCRPhysicalIndex(oCreature, AI_RANGE_PERCEPTION, AI_ENEMY, bAlwaysAtk)); + } } object oTarget = GetLocalObject(oCreature, AI_ENEMY + sIndex); + // If we don't have a target lets try one last time and see if we can find one. + if(oTarget == OBJECT_INVALID) oTarget = ai_GetLowestCRPhysicalTarget(oCreature, AI_RANGE_PERCEPTION, AI_ENEMY, bAlwaysAtk); // We might not have a target this is fine as sometimes we don't want to attack! - if(AI_DEBUG) ai_Debug("0i_combat", "2048", GetName(oTarget) + " is the weakest target for melee combat!"); + if(AI_DEBUG) ai_Debug("0i_combat", "2660", GetName(oTarget) + " is the weakest target for melee combat!"); return oTarget; } object ai_GetHighestCRTargetForMeleeCombat(object oCreature, int nInMelee) @@ -2158,20 +2681,20 @@ object ai_GetHighestCRTargetForMeleeCombat(object oCreature, int nInMelee) if(oPCTarget != OBJECT_INVALID) return oPCTarget; string sIndex; // Are we in melee? If so try to get the weakest enemy in melee. - if(nInMelee > 0) sIndex = IntToString(ai_GetHighestCRIndex(oCreature, AI_RANGE_MELEE)); + if(nInMelee > 0) sIndex = IntToString(ai_GetHighestCRPhysicalIndex(oCreature, AI_RANGE_MELEE)); // If not then lets go find someone to attack! else { // Get the weakest combat rated enemy. - sIndex = IntToString(ai_GetHighestCRIndexNotInAOE(oCreature, AI_RANGE_PERCEPTION)); - /* Lets stay out of bad AOE's. + sIndex = IntToString(ai_GetHighestCRPhysicalIndexNotInAOE(oCreature)); // If we didn't get a target then get any target within range. - if(sIndex == "0") sIndex = IntToString(ai_GetHighestCRIndex(oCreature)); - */ + if(sIndex == "0") sIndex = IntToString(ai_GetHighestCRPhysicalIndex(oCreature)); } object oTarget = GetLocalObject(oCreature, AI_ENEMY + sIndex); + // If we don't have a target lets try one last time and see if we can find one. + if(oTarget == OBJECT_INVALID) oTarget = ai_GetHighestCRPhysicalTarget(oCreature); // We might not have a target this is fine as sometimes we don't want to attack! - if(AI_DEBUG) ai_Debug("0i_combat", "2070", GetName(oTarget) + " is the strongest target for melee combat!"); + if(AI_DEBUG) ai_Debug("0i_combat", "2680", GetName(oTarget) + " is the strongest target for melee combat!"); return oTarget; } object ai_GetEnemyAttackingMe(object oCreature, float fMaxRange = AI_RANGE_MELEE) @@ -2186,7 +2709,7 @@ object ai_GetEnemyAttackingMe(object oCreature, float fMaxRange = AI_RANGE_MELEE if(!ai_Disabled(oEnemy)) { fDistance = GetLocalFloat(oCreature, AI_ENEMY_RANGE + sCtr); - if(AI_DEBUG) ai_Debug("0i_combat", "2084", "Getting Enemy Attacking Me: " + sCtr + " " + + if(AI_DEBUG) ai_Debug("0i_combat", "2695", "Getting Enemy Attacking Me: " + sCtr + " " + GetName(oEnemy) + " fTargetRange: " + FloatToString(fDistance, 0, 2) + " fMaxRange: " + FloatToString(fMaxRange, 0, 2) + " Attacking: " + GetName(ai_GetAttackedTarget(oEnemy))); @@ -2196,7 +2719,7 @@ object ai_GetEnemyAttackingMe(object oCreature, float fMaxRange = AI_RANGE_MELEE // If an enemy isn't attacking someone we must assume we are next! if(oAttacked == oCreature || oAttacked == OBJECT_INVALID) { - if(AI_DEBUG) ai_Debug("0i_combat", "2095", "Enemy attacking me: " + GetName(oEnemy) + " has attacked: " + GetName(ai_GetAttackedTarget(oEnemy))); + if(AI_DEBUG) ai_Debug("0i_combat", "2705", "Enemy attacking me: " + GetName(oEnemy) + " has attacked: " + GetName(ai_GetAttackedTarget(oEnemy))); return oEnemy; } } @@ -2218,7 +2741,7 @@ object ai_GetEnemyAttackingMyAlly(object oCreature, object oAlly, float fMaxRang while(oEnemy != OBJECT_INVALID) { fEnemyRange = GetLocalFloat(oCreature, AI_ENEMY_RANGE + sCtr); - if(AI_DEBUG) ai_Debug("0i_combat", "2117", "Getting Enemy Attacking Ally:" + + if(AI_DEBUG) ai_Debug("0i_combat", "2727", "Getting Enemy Attacking Ally:" + GetName(oAlly) + ": " + sCtr + " InMelee:" + GetName(oEnemy) + " fEnemyRange: " + FloatToString(fEnemyRange, 0, 2) + " fMaxRange: " + FloatToString(fMaxRange, 0, 2) + " Attacking: " + @@ -2226,7 +2749,7 @@ object ai_GetEnemyAttackingMyAlly(object oCreature, object oAlly, float fMaxRang if(fEnemyRange <= fMaxRange) { oAttacked = ai_GetAttackedTarget(oEnemy); - if(AI_DEBUG) ai_Debug("0i_combat", "2125", "Enemy attacking " + + if(AI_DEBUG) ai_Debug("0i_combat", "2735", "Enemy attacking " + GetName(oAlly) + ": " + GetName(oEnemy) + " has attacked: " + GetName(ai_GetAttackedTarget(oEnemy))); // If an enemy isn't attacking someone we must assume we are next! @@ -2271,7 +2794,7 @@ int ai_GetNumOfEnemiesInRange(object oCreature, float fMaxRange = AI_RANGE_MELEE if(fDistance < fMaxRange) nNumOfEnemies ++; fDistance = GetLocalFloat(oCreature, AI_ENEMY_RANGE + IntToString(++nCnt)); } - if(AI_DEBUG) ai_Debug("0i_combat", "2459", IntToString (nNumOfEnemies) + " enemies within " + FloatToString(fMaxRange, 0, 2) + " meters."); + if(AI_DEBUG) ai_Debug("0i_combat", "2780", IntToString (nNumOfEnemies) + " enemies within " + FloatToString(fMaxRange, 0, 2) + " meters."); return nNumOfEnemies; } object ai_GetAllyBuffTarget(object oCreature, int nSpell, float fMaxRange = AI_RANGE_BATTLEFIELD) @@ -2284,7 +2807,7 @@ object ai_GetAllyBuffTarget(object oCreature, int nSpell, float fMaxRange = AI_R if(fMaxRange > fNearestEnemy) fMaxRange = fNearestEnemy; // Now lets get the best target based on the spell data in ai_spells.2da string sBuffTarget = Get2DAString("ai_spells", "Buff_Target", nSpell); - if(AI_DEBUG) ai_Debug("0i_combat", "2596", "sBuffTarget: " + sBuffTarget + " fMaxRange: " + FloatToString(fMaxRange, 0, 2)); + if(AI_DEBUG) ai_Debug("0i_combat", "2793", "sBuffTarget: " + sBuffTarget + " fMaxRange: " + FloatToString(fMaxRange, 0, 2)); if(sBuffTarget == "0") return oCreature; if(sBuffTarget == "1") return ai_BuffHighestAbilityScoreTarget(oCreature, nSpell, ABILITY_STRENGTH, "", fMaxRange, AI_ALLY); @@ -2325,7 +2848,7 @@ int ai_GetCurrentRound(object oCreature) { int nRound = GetLocalInt(oCreature, AI_ROUND) + 1; SetLocalInt(oCreature, AI_ROUND, nRound); - if(AI_DEBUG) ai_Debug("0i_combat", "2471", "nRound: " + IntToString(nRound)); + if(AI_DEBUG) ai_Debug("0i_combat", "2834", "nRound: " + IntToString(nRound)); return nRound; } int ai_GetDifficulty(object oCreature) @@ -2333,7 +2856,7 @@ int ai_GetDifficulty(object oCreature) int nAdjustment = GetLocalInt(oCreature, AI_DIFFICULTY_ADJUSTMENT); int nDifficulty = GetLocalInt(oCreature, AI_ENEMY_POWER) - GetLocalInt(oCreature, AI_ALLY_POWER) + 13 + nAdjustment; if(nDifficulty < 1) nDifficulty = 1; - if(AI_DEBUG) ai_Debug("0i_combat", "2474", "(Difficulty: Enemy Power: " + IntToString(GetLocalInt(oCreature, AI_ENEMY_POWER)) + + if(AI_DEBUG) ai_Debug("0i_combat", "2842", "(Difficulty: Enemy Power: " + IntToString(GetLocalInt(oCreature, AI_ENEMY_POWER)) + " - Ally Power: " + IntToString(GetLocalInt(oCreature, AI_ALLY_POWER)) + ") + 13 + nAdj: " + IntToString(nAdjustment) + " = " + IntToString(nDifficulty) + "(Min of 1)"); @@ -2349,7 +2872,7 @@ int ai_GetMyCombatRating(object oCreature) } else nAtkBonus += GetAbilityModifier(ABILITY_STRENGTH, oCreature); if(ai_GetIsMeleeWeapon(oWeapon)) nAtkBonus += ai_GetWeaponAtkBonus(oWeapon); - if(AI_DEBUG) ai_Debug("0i_combat", "2496", "GetMyCombatRating (nAtkBonus: " + IntToString(nAtkBonus) + + if(AI_DEBUG) ai_Debug("0i_combat", "2858", "GetMyCombatRating (nAtkBonus: " + IntToString(nAtkBonus) + " nAC: " + IntToString(GetAC(oCreature)) + " - 10) / 2 = " + IntToString((nAtkBonus + GetAC(oCreature) - 10) / 2)); return(nAtkBonus + GetAC(oCreature) - 10) / 2; @@ -2425,7 +2948,7 @@ void ai_SetNormalAppearance(object oCreature) if(!ai_GetHasEffectType(oCreature, EFFECT_TYPE_POLYMORPH)) { int nForm = GetAppearanceType(oCreature); - if(AI_DEBUG) ai_Debug("0i_combat", "2729", GetName(oCreature) + " form: " + IntToString(nForm)); + if(AI_DEBUG) ai_Debug("0i_combat", "2835", GetName(oCreature) + " form: " + IntToString(nForm)); SetLocalInt(oCreature, AI_NORMAL_FORM, nForm + 1); } } @@ -2500,7 +3023,7 @@ struct stClasses ai_GetFactionsClasses(object oCreature, int bEnemy = TRUE, floa if(bEnemy) oTarget = ai_GetNearestEnemy(oCreature, ++nCnt, 7, 7); else oTarget = ai_GetNearestAlly(oCreature, ++nCnt, 7, 7); } - if(AI_DEBUG) ai_Debug("0i_combat", "2627", "Enemy: " + IntToString(bEnemy) + " fMaxRange: " + FloatToString(fMaxRange, 0, 2) + + if(AI_DEBUG) ai_Debug("0i_combat", "2910", "Enemy: " + IntToString(bEnemy) + " fMaxRange: " + FloatToString(fMaxRange, 0, 2) + " CLERICS: " + IntToString(sCount.CLERICS) + "(" + IntToString(sCount.CLERIC_LEVELS) + ") FIGHTERS: " +IntToString(sCount.FIGHTERS) + "(" + IntToString(sCount.FIGHTER_LEVELS) + ") MAGES: " +IntToString(sCount.MAGES) + "(" + IntToString(sCount.MAGE_LEVELS) + @@ -2542,11 +3065,11 @@ void ai_EquipBestWeapons(object oCreature, object oTarget = OBJECT_INVALID) nRacialType == RACIAL_TYPE_OOZE || nRacialType == RACIAL_TYPE_VERMIN) return; //if(Polymorphed()) return; - if(AI_DEBUG) ai_Debug("0i_combat", "2669", GetName(OBJECT_SELF) + " is equiping best weapon!"); + if(AI_DEBUG) ai_Debug("0i_combat", "2952", GetName(OBJECT_SELF) + " is equiping best weapon!"); // Determine if I am wielding a ranged weapon, melee weapon, or none. int bIsWieldingRanged = ai_HasRangedWeaponWithAmmo(oCreature); int bIsWieldingMelee = ai_GetIsMeleeWeapon(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND)); - if(AI_DEBUG) ai_Debug("0i_combat", "2673", "bIsWieldingRanged: " + IntToString(bIsWieldingRanged) + + if(AI_DEBUG) ai_Debug("0i_combat", "2956", "bIsWieldingRanged: " + IntToString(bIsWieldingRanged) + " bIsWieldingMelee: " + IntToString(bIsWieldingMelee)); // If we are hidden then change to a melee weapon so we can move in to attack. if(ai_GetIsHidden(oCreature)) @@ -2557,7 +3080,7 @@ void ai_EquipBestWeapons(object oCreature, object oTarget = OBJECT_INVALID) } // Equip the appropriate weapon for the distance of the enemy. int nEnemyGroup = ai_GetNumOfEnemiesInGroup(oCreature); - if(AI_DEBUG) ai_Debug("0i_combat", "2684", GetName(oCreature) + " has " + IntToString(nEnemyGroup) + " enemies within 5.0f them! PointBlank: " + + if(AI_DEBUG) ai_Debug("0i_combat", "2967", GetName(oCreature) + " has " + IntToString(nEnemyGroup) + " enemies within 5.0f them! PointBlank: " + IntToString(GetHasFeat(FEAT_POINT_BLANK_SHOT, oCreature))); // We are in melee combat. if(nEnemyGroup > 0) @@ -2572,7 +3095,7 @@ void ai_EquipBestWeapons(object oCreature, object oTarget = OBJECT_INVALID) if(!bIsWieldingMelee) { ai_EquipBestMeleeWeapon(oCreature); - if(AI_DEBUG) ai_Debug("0i_combat", "2699", GetName(oCreature) + " is equiping melee weapon due to close enemies!"); + if(AI_DEBUG) ai_Debug("0i_combat", "2982", GetName(oCreature) + " is equiping melee weapon due to close enemies!"); } } } @@ -2580,7 +3103,7 @@ void ai_EquipBestWeapons(object oCreature, object oTarget = OBJECT_INVALID) // We are not in melee range. else { - if(AI_DEBUG) ai_Debug("0i_combat", "2707", GetName(oCreature) + " is not in melee combat with an enemy!"); + if(AI_DEBUG) ai_Debug("0i_combat", "2990", GetName(oCreature) + " is not in melee combat with an enemy!"); // If are at range with the enemy then equip a ranged weapon. if(!bIsWieldingRanged) { @@ -2588,7 +3111,7 @@ void ai_EquipBestWeapons(object oCreature, object oTarget = OBJECT_INVALID) // Make sure that they equiped a range weapon. bIsWieldingRanged = ai_HasRangedWeaponWithAmmo(oCreature); bIsWieldingMelee = ai_GetIsMeleeWeapon(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oCreature)); - if(AI_DEBUG) ai_Debug("0i_combat", "2719", GetName(oCreature) + " is attempting to equip a ranged weapon: " + IntToString(bIsWieldingRanged)); + if(AI_DEBUG) ai_Debug("0i_combat", "2998", GetName(oCreature) + " is attempting to equip a ranged weapon: " + IntToString(bIsWieldingRanged)); // If we equiped a ranged weapon then drop out. } } @@ -2598,12 +3121,12 @@ void ai_EquipBestWeapons(object oCreature, object oTarget = OBJECT_INVALID) int ai_EquipBestMeleeWeapon(object oCreature, object oTarget = OBJECT_INVALID) { if(ai_GetAIMode(oCreature, AI_MODE_EQUIP_WEAPON_OFF)) return FALSE; - if(AI_DEBUG) ai_Debug("0i_combat", "3049", GetName(oCreature) + " is equiping best melee weapon!"); + if(AI_DEBUG) ai_Debug("0i_combat", "2992", GetName(oCreature) + " is equiping best melee weapon!"); float fItemPower, fOffItemPower, fRightPower, fLeftPower, f2HandedPower; int nItemPower, nShieldPower, nShieldValue, nItemValue, nRightValue; int n2HandedValue, nLeftValue, bTwoWeaponUser; int nMaxItemValue = ai_GetMaxItemValueThatCanBeEquiped(GetHitDice(oCreature)); - if(AI_DEBUG) ai_Debug("0i_combat", "3054", "nMaxItemValue: " + IntToString(nMaxItemValue)); + if(AI_DEBUG) ai_Debug("0i_combat", "2997", "nMaxItemValue: " + IntToString(nMaxItemValue)); bTwoWeaponUser = GetHasFeat(374/*FEAT_DUAL_WIELD*/, oCreature) || GetHasFeat(FEAT_TWO_WEAPON_FIGHTING, oCreature); object oShield = OBJECT_INVALID; object oRight = OBJECT_INVALID; @@ -2622,7 +3145,7 @@ int ai_EquipBestMeleeWeapon(object oCreature, object oTarget = OBJECT_INVALID) } else f2HandedPower = ai_GetMeleeWeaponAvgDmg(oCreature, oRightHand, TRUE); n2HandedValue = GetGoldPieceValue(oRightHand); - if(AI_DEBUG) ai_Debug("0i_combat", "3073", " 2Handed oRightHand: " + GetName(oRightHand) + + if(AI_DEBUG) ai_Debug("0i_combat", "3016", " 2Handed oRightHand: " + GetName(oRightHand) + " f2HandPower: " + FloatToString(f2HandedPower, 0, 2) + " n2HandedValue: " + IntToString(n2HandedValue)); } @@ -2630,7 +3153,7 @@ int ai_EquipBestMeleeWeapon(object oCreature, object oTarget = OBJECT_INVALID) { fRightPower = ai_GetMeleeWeaponAvgDmg(oCreature, oRightHand); nRightValue = GetGoldPieceValue(oRightHand); - if(AI_DEBUG) ai_Debug("0i_combat", "3081", " 1Handed oRightHand: " + GetName(oRightHand) + + if(AI_DEBUG) ai_Debug("0i_combat", "3024", " 1Handed oRightHand: " + GetName(oRightHand) + " fRightPower: " + FloatToString(fRightPower, 0, 2) + " nRightValue: " + IntToString(nRightValue)); } @@ -2643,7 +3166,7 @@ int ai_EquipBestMeleeWeapon(object oCreature, object oTarget = OBJECT_INVALID) { nShieldPower = ai_SetShieldAC(oCreature, oLeftHand); nShieldValue = GetGoldPieceValue(oLeftHand); - if(AI_DEBUG) ai_Debug("0i_combat", "3098", " Shield oLeftHand: " + GetName(oLeftHand) + + if(AI_DEBUG) ai_Debug("0i_combat", "3037", " Shield oLeftHand: " + GetName(oLeftHand) + " fShieldPower: " + IntToString(nShieldPower) + " nShieldValue: " + IntToString(nShieldValue)); } @@ -2652,7 +3175,7 @@ int ai_EquipBestMeleeWeapon(object oCreature, object oTarget = OBJECT_INVALID) { fLeftPower = ai_GetMeleeWeaponAvgDmg(oCreature, oLeftHand, FALSE, TRUE); nLeftValue = GetGoldPieceValue(oLeftHand); - if(AI_DEBUG) ai_Debug("0i_combat", "3103", " 1Handed oLeftHand: " + GetName(oLeftHand) + + if(AI_DEBUG) ai_Debug("0i_combat", "3046", " 1Handed oLeftHand: " + GetName(oLeftHand) + " fLeftPower: " + FloatToString(fLeftPower, 0, 2) + " nLeftValue: " + IntToString(nLeftValue)); } @@ -2664,7 +3187,7 @@ int ai_EquipBestMeleeWeapon(object oCreature, object oTarget = OBJECT_INVALID) if(oItem == OBJECT_INVALID) return FALSE; while(oItem != OBJECT_INVALID) { - if(AI_DEBUG) ai_Debug("0i_combat", "3114", GetName(oItem) + " MeleeWeapon: " + + if(AI_DEBUG) ai_Debug("0i_combat", "3058", GetName(oItem) + " MeleeWeapon: " + IntToString(ai_GetIsMeleeWeapon(oItem)) + " Proficient: " + IntToString(ai_GetIsProficientWith(oCreature, oItem)) + " Identified: " + IntToString(GetIdentified(oItem))); @@ -2672,7 +3195,7 @@ int ai_EquipBestMeleeWeapon(object oCreature, object oTarget = OBJECT_INVALID) GetIdentified(oItem) && ai_CheckIfCanUseItem(oCreature, oItem)) { nItemValue = GetGoldPieceValue(oItem); - if(AI_DEBUG) ai_Debug("0i_combat", "3122", " nItemValue: " + IntToString(nItemValue)); + if(AI_DEBUG) ai_Debug("0i_combat", "3066", " nItemValue: " + IntToString(nItemValue)); if(!GetLocalInt(GetModule(), AI_RULE_ILR) || nMaxItemValue >= nItemValue) { if(ai_GetIsShield(oItem)) @@ -2755,7 +3278,7 @@ int ai_EquipBestMeleeWeapon(object oCreature, object oTarget = OBJECT_INVALID) } oItem = GetNextItemInInventory(); } - if(AI_DEBUG) ai_Debug("0i_combat", "3197", "oRight: " + GetName(oRight) + " oLeft:" + + if(AI_DEBUG) ai_Debug("0i_combat", "3149", "oRight: " + GetName(oRight) + " oLeft:" + GetName(oLeft) + " oShield: " + GetName(oShield) + "o2Handed: " + GetName(o2Handed)); // First check for two weapons first. @@ -2763,12 +3286,12 @@ int ai_EquipBestMeleeWeapon(object oCreature, object oTarget = OBJECT_INVALID) { fRightPower = ai_GetMeleeWeaponAvgDmg(oCreature, oRight, FALSE, FALSE, oLeft); fRightPower += ai_GetMeleeWeaponAvgDmg(oCreature, oLeft, FALSE, TRUE); - if(AI_DEBUG) ai_Debug("0i_combat", "3205", " Right/Left Power: " + + if(AI_DEBUG) ai_Debug("0i_combat", "3157", " Right/Left Power: " + FloatToString(fRightPower, 0, 2) + " 2HandedPower: " + FloatToString(f2HandedPower, 0, 2)); if(fRightPower > f2HandedPower) { - if(AI_DEBUG) ai_Debug("0i_combat", "3210", GetName(oCreature) + " is equiping " + + if(AI_DEBUG) ai_Debug("0i_combat", "3162", GetName(oCreature) + " is equiping " + GetName(oRight) + " in the right hand and " + GetName(oLeft) + " in the left hand."); ActionEquipItem(oRight, INVENTORY_SLOT_RIGHTHAND); @@ -2778,7 +3301,7 @@ int ai_EquipBestMeleeWeapon(object oCreature, object oTarget = OBJECT_INVALID) } if(f2HandedPower > fRightPower && o2Handed != OBJECT_INVALID) { - if(AI_DEBUG) ai_Debug("0i_combat", "3220", GetName(oCreature) + " is equiping " + + if(AI_DEBUG) ai_Debug("0i_combat", "3172", GetName(oCreature) + " is equiping " + GetName(o2Handed) + " in both hands."); ActionEquipItem(o2Handed, INVENTORY_SLOT_RIGHTHAND); return TRUE; @@ -2786,7 +3309,7 @@ int ai_EquipBestMeleeWeapon(object oCreature, object oTarget = OBJECT_INVALID) // Now lets just equip the best weapon for the right hand. if(oRight != OBJECT_INVALID) { - if(AI_DEBUG) ai_Debug("0i_combat", "3228", GetName(oCreature) + " is equiping " + + if(AI_DEBUG) ai_Debug("0i_combat", "3180", GetName(oCreature) + " is equiping " + GetName(oRight) + " in the right hand. "); ActionEquipItem(oRight, INVENTORY_SLOT_RIGHTHAND); } @@ -2796,7 +3319,7 @@ int ai_EquipBestMeleeWeapon(object oCreature, object oTarget = OBJECT_INVALID) !ai_GetIsTwoHandedWeapon(oRightHand, oCreature)) && oShield != OBJECT_INVALID && GetHasFeat(FEAT_SHIELD_PROFICIENCY, oCreature)) { - if(AI_DEBUG) ai_Debug("0i_combat", "3238", GetName(oCreature) + " is equiping " + + if(AI_DEBUG) ai_Debug("0i_combat", "3190", GetName(oCreature) + " is equiping " + GetName(oShield) + " in the left hand."); ActionEquipItem(oShield, INVENTORY_SLOT_LEFTHAND); return TRUE; @@ -2805,23 +3328,23 @@ int ai_EquipBestMeleeWeapon(object oCreature, object oTarget = OBJECT_INVALID) // holding a bow. else if(oRight == OBJECT_INVALID) { - if(AI_DEBUG) ai_Debug("0i_combat", "3247", GetName(oCreature) + " did not equip a melee weapon"); + if(AI_DEBUG) ai_Debug("0i_combat", "3199", GetName(oCreature) + " did not equip a melee weapon"); // We couldn't find a melee weapon but we are looking to go into melee // I'm holding a ranged weapon! We better put it up. if(GetWeaponRanged(oRightHand)) { - if(AI_DEBUG) ai_Debug("0i_combat", "3252", GetName(oCreature) + " is unequiping " + GetName(oRightHand)); + if(AI_DEBUG) ai_Debug("0i_combat", "3204", GetName(oCreature) + " is unequiping " + GetName(oRightHand)); ActionUnequipItem(oRightHand); return TRUE; } } - if(AI_DEBUG) ai_Debug("0i_combat", "3257", GetName(oCreature) + " is not equiping a weapon!"); + if(AI_DEBUG) ai_Debug("0i_combat", "3209", GetName(oCreature) + " is not equiping a weapon!"); return FALSE; } int ai_EquipBestRangedWeapon(object oCreature, object oTarget = OBJECT_INVALID) { if(ai_GetAIMode(oCreature, AI_MODE_EQUIP_WEAPON_OFF)) return FALSE; - if(AI_DEBUG) ai_Debug("0i_combat", "3267", GetName(oCreature) + " is looking for best ranged weapon!"); + if(AI_DEBUG) ai_Debug("0i_combat", "3215", GetName(oCreature) + " is looking for best ranged weapon!"); int nAmmo, nAmmoSlot, nBestType1, nBestType2, nType, nFeat, nItemValue, nRangedValue; int nMaxItemValue = ai_GetMaxItemValueThatCanBeEquiped(GetHitDice(oCreature)); string sAmmo; @@ -2857,7 +3380,7 @@ int ai_EquipBestRangedWeapon(object oCreature, object oTarget = OBJECT_INVALID) else if(GetHasFeat(FEAT_RAPID_RELOAD, oCreature)) { nBestType1 = BASE_ITEM_HEAVYCROSSBOW; nBestType2 = BASE_ITEM_LIGHTCROSSBOW; nAmmo = BASE_ITEM_BOLT; nAmmoSlot = INVENTORY_SLOT_BOLTS; sAmmo = "bolt"; } - if(AI_DEBUG) ai_Debug("0i_combat", "3262", "nBestType1: " + IntToString(nBestType1) + " nBestType2: " + IntToString(nBestType2) + + if(AI_DEBUG) ai_Debug("0i_combat", "3251", "nBestType1: " + IntToString(nBestType1) + " nBestType2: " + IntToString(nBestType2) + " nAmmo: " + IntToString(nAmmo)); int nCreatureSize = GetCreatureSize(oCreature) + 1; // Cycle through the inventory looking for a ranged weapon. @@ -2865,13 +3388,13 @@ int ai_EquipBestRangedWeapon(object oCreature, object oTarget = OBJECT_INVALID) while(oItem != OBJECT_INVALID) { nType = GetBaseItemType(oItem); - if(AI_DEBUG) ai_Debug("0i_combat", "3269", "oItem: " + GetName(oItem) + + if(AI_DEBUG) ai_Debug("0i_combat", "3259", "oItem: " + GetName(oItem) + " Identified: " + IntToString(GetIdentified(oItem)) + " Ranged Weapon: " + Get2DAString("baseitems", "RangedWeapon", nType)); // Make sure it is identified and it is a ranged weapon. if(GetIdentified(oItem) && Get2DAString("baseitems", "RangedWeapon", nType) != "") { - if(AI_DEBUG) ai_Debug("0i_combat", "3278", " Proficient: " + + if(AI_DEBUG) ai_Debug("0i_combat", "3265", " Proficient: " + IntToString(ai_GetIsProficientWith(oCreature, oItem)) + " nMaxItemValue: " + IntToString(nMaxItemValue)); if(ai_GetIsProficientWith(oCreature, oItem)) @@ -2879,15 +3402,15 @@ int ai_EquipBestRangedWeapon(object oCreature, object oTarget = OBJECT_INVALID) if(ai_CheckIfCanUseItem(oCreature, oItem)) { nItemValue = GetGoldPieceValue(oItem); - if(AI_DEBUG) ai_Debug("0i_combat", "3284", "nItemValue: " + IntToString(nItemValue)); + if(AI_DEBUG) ai_Debug("0i_combat", "3273", "nItemValue: " + IntToString(nItemValue)); if(!GetLocalInt(GetModule(), AI_RULE_ILR) || nMaxItemValue >= nItemValue) { - if(AI_DEBUG) ai_Debug("0i_combat", "3287", " Creature Size: " + IntToString(nCreatureSize) + + if(AI_DEBUG) ai_Debug("0i_combat", "3276", " Creature Size: " + IntToString(nCreatureSize) + " Weapon Size: " + Get2DAString("baseitems", "WeaponSize", nType)); // Make sure they are large enough to use it. if(StringToInt(Get2DAString("baseitems", "WeaponSize", nType)) <= nCreatureSize) { - if(AI_DEBUG) ai_Debug("0i_combat", "3292", "nItemValue: " + IntToString(nItemValue) + + if(AI_DEBUG) ai_Debug("0i_combat", "3281", "nItemValue: " + IntToString(nItemValue) + " nRangedValue: " + IntToString(nRangedValue) + " nType: " + IntToString(nType)); // Is it of the best range weapon type? 0 is any range weapon. // Also grab any range weapon until we have a best type. @@ -2899,7 +3422,7 @@ int ai_EquipBestRangedWeapon(object oCreature, object oTarget = OBJECT_INVALID) if(ai_GetHasItemProperty(oItem, ITEM_PROPERTY_UNLIMITED_AMMUNITION)) { oRanged = oItem; nRangedValue = nItemValue; - if(AI_DEBUG) ai_Debug("0i_combat", "3304", "Selecting oRanged: " + GetName(oRanged) + + if(AI_DEBUG) ai_Debug("0i_combat", "3293", "Selecting oRanged: " + GetName(oRanged) + " nRangedValue: " + IntToString(nRangedValue) + " and doesn't need ammo!"); } else @@ -2915,7 +3438,7 @@ int ai_EquipBestRangedWeapon(object oCreature, object oTarget = OBJECT_INVALID) else nAmmo = 0; } // Now do we have ammo for it? - if(AI_DEBUG) ai_Debug("0i_combat", "3320", "nAmmo: " + IntToString(nAmmo)); + if(AI_DEBUG) ai_Debug("0i_combat", "3309", "nAmmo: " + IntToString(nAmmo)); if(nAmmo > 0) { if(nAmmo == BASE_ITEM_ARROW || @@ -2936,7 +3459,7 @@ int ai_EquipBestRangedWeapon(object oCreature, object oTarget = OBJECT_INVALID) if(oAmmo != OBJECT_INVALID) { oRanged = oItem; nRangedValue = nItemValue; - if(AI_DEBUG) ai_Debug("0i_combat", "3307", "Selecting oRanged: " + GetName(oRanged) + + if(AI_DEBUG) ai_Debug("0i_combat", "3330", "Selecting oRanged: " + GetName(oRanged) + " nRangedValue: " + IntToString(nRangedValue)); } } @@ -2952,7 +3475,7 @@ int ai_EquipBestRangedWeapon(object oCreature, object oTarget = OBJECT_INVALID) // They don't have a range weapon so lets break out. if(oRanged == OBJECT_INVALID) { - if(AI_DEBUG) ai_Debug("0i_combat", "3357", GetName(oCreature) + " did not equip a ranged weapon!"); + if(AI_DEBUG) ai_Debug("0i_combat", "3346", GetName(oCreature) + " did not equip a ranged weapon!"); return FALSE; } ActionEquipItem(oRanged, INVENTORY_SLOT_RIGHTHAND); @@ -2960,7 +3483,7 @@ int ai_EquipBestRangedWeapon(object oCreature, object oTarget = OBJECT_INVALID) } int ai_EquipBestMonkMeleeWeapon(object oCreature, object oTarget = OBJECT_INVALID) { - if(AI_DEBUG) ai_Debug("0i_combat", "2949", GetName(OBJECT_SELF) + " is equiping best monk melee weapon!"); + if(AI_DEBUG) ai_Debug("0i_combat", "3354", GetName(OBJECT_SELF) + " is equiping best monk melee weapon!"); int nValue, nRightValue; int nMaxItemValue = ai_GetMaxItemValueThatCanBeEquiped(GetHitDice(oCreature)); object oRight = OBJECT_INVALID; @@ -2994,10 +3517,10 @@ int ai_EquipBestMonkMeleeWeapon(object oCreature, object oTarget = OBJECT_INVALI // Finally lets just equip the kama if we have one. if(oRight == OBJECT_INVALID) { - if(AI_DEBUG) ai_Debug("0i_combat", "2983", GetName(oCreature) + " did not equip a melee weapon!"); + if(AI_DEBUG) ai_Debug("0i_combat", "3388", GetName(oCreature) + " did not equip a melee weapon!"); return FALSE; } - if(AI_DEBUG) ai_Debug("0i_combat", "2986", GetName(oCreature) + " is equiping " + GetName(oRight) + " in the right hand."); + if(AI_DEBUG) ai_Debug("0i_combat", "3391", GetName(oCreature) + " is equiping " + GetName(oRight) + " in the right hand."); ActionEquipItem(oRight, INVENTORY_SLOT_RIGHTHAND); return TRUE; } @@ -3032,7 +3555,7 @@ int ai_IsInADangerousAOE(object oCreature, float fMaxRange = AI_RANGE_BATTLEFIEL else if(sAOEType == "VFX_PER_DELAY_BLAST_FIREBALL") { fRadius = 2.0; nSpell = SPELL_DELAYED_BLAST_FIREBALL; } else if(sAOEType == "VFX_PER_GLYPH") { fRadius = 2.5; nSpell = SPELL_GLYPH_OF_WARDING; } else fRadius = 0.0; - if(AI_DEBUG) ai_Debug("0i_combat", "3088", GetName(oCreature) + " distance from AOE is " + FloatToString(fDistance, 0, 2) + + if(AI_DEBUG) ai_Debug("0i_combat", "3426", GetName(oCreature) + " distance from AOE is " + FloatToString(fDistance, 0, 2) + " AOE Radius: " + FloatToString(fRadius, 0, 2) + " AOE Type: " + GetTag(oAOE)); // fRadius > 0.0 keeps them from tiggering that they are in a dangerous @@ -3066,17 +3589,17 @@ int ai_IsInADangerousAOE(object oCreature, float fMaxRange = AI_RANGE_BATTLEFIEL } else // we must find a target out of the AOE or fight in the AOE. { - oTarget = ai_GetNearestTargetNotInAOE(oCreature, AI_RANGE_PERCEPTION, AI_ENEMY, TRUE); + oTarget = ai_GetNearestPhysicalTargetNotInAOE(oCreature, AI_RANGE_PERCEPTION, AI_ENEMY, TRUE); if(oTarget != OBJECT_INVALID) lLocation = GetLocation(oTarget); } } else lLocation = GetRandomLocation(GetArea(oCreature), oCreature, fRadius + 1.0); ai_ClearCreatureActions(); - if(AI_DEBUG) ai_Debug("0i_combat", "3035", GetName(oCreature) + " is moving out of area of effect!"); + if(AI_DEBUG) ai_Debug("0i_combat", "3466", GetName(oCreature) + " is moving out of area of effect!"); ActionMoveToLocation(lLocation, TRUE); return TRUE; } - else if(bDangerous) return TRUE; + else return bDangerous; return FALSE; } int ai_GetIsHidden(object oHidden) @@ -3207,11 +3730,12 @@ void ai_SetCreatureAIScript(object oCreature) { sCombatAI = "ai_defensive"; } + /* Needs looked at as it will soft lock some monsters! else if(GetHasSpell(SPELL_LESSER_DISPEL, oCreature) || GetHasSpell(SPELL_DISPEL_MAGIC, oCreature) || GetHasSpell(SPELL_GREATER_DISPELLING, oCreature)) { sCombatAI = "ai_cntrspell"; - } + }*/ else if(ai_CheckClassType(oCreature, AI_CLASS_TYPE_ARCANE) && ai_GetCharacterLevels(oCreature) > 4) sCombatAI = "ai_ranged"; else if(ai_EquipBestRangedWeapon(oCreature)) sCombatAI = "ai_ranged"; @@ -3345,6 +3869,17 @@ int ai_ACAdjustmentGood(object oCreature, object oTarget, float fACAdj) // Anything less than 1 helps are AC! return fAdjChance < 1.00; } +int ai_ACAdjustmentPenalty(object oCreature, object oTarget, float fACAdj) +{ + float fCreatureAC = IntToFloat(GetAC(oCreature)); + float fTargetAtk = IntToFloat(ai_GetCreatureAttackBonus(oTarget)); + float fToHitChance = (21.0-(fCreatureAC - fTargetAtk + fACAdj))/20.0; + float fRoll = IntToFloat(d100()); + if(AI_DEBUG) ai_Debug("0i_combat", "3380", "Adjusted Chance To Hit: " + FloatToString(fToHitChance, 0, 2) + " < " + + FloatToString(fRoll, 0, 2) + " return TRUE"); + // Roll % chance to see if we should ignore the penalty and go for it! + return fToHitChance < fRoll; +} int ai_CanIMoveInCombat(object oCreature) { // DC 15 tumble check is required to not give attacks of opportunity. @@ -3367,7 +3902,44 @@ int ai_CheckRangedCombatPosition(object oCreature, object oTarget, int nAction) float fDistance = GetDistanceBetween(oCreature, oNearestEnemy); if(AI_DEBUG) ai_Debug("0i_combat", "3337", "oNearestEnemy: " + GetName(oNearestEnemy) + " fDistance: " + FloatToString(fDistance, 0, 2)); - // If we have sneak attack then we want to be within 30'. + // If we have Point blank shot then we want to be within 15' [4 meters]. + if(GetHasFeat(FEAT_POINT_BLANK_SHOT, oCreature)) + { + if(fDistance > AI_RANGE_MELEE) + { + // We check this because if the enemy is moving or has not + // started acting then we don't want to move up on them as they + // might move towards us. Just attack! Only sneak attack if they are busy. + int nAction = GetCurrentAction(oNearestEnemy); + if(AI_DEBUG) ai_Debug("0i_combat", "3353", GetName(oNearestEnemy) + " current action: " + IntToString(nAction)); + if(nAction == ACTION_MOVETOPOINT || + nAction == ACTION_INVALID || + nAction == ACTION_RANDOMWALK) return FALSE; + // If they are attacking make sure it is in melee? + // If not then don't move since they might be moving toward us. + if(nAction == ACTION_ATTACKOBJECT) + { + if(!ai_GetNumOfEnemiesInRange(oNearestEnemy)) return FALSE; + } + if(AI_DEBUG) ai_Debug("0i_combat", "3355", GetName(oCreature) + " is moving closer [4.0] to " + + GetName(oNearestEnemy) + " to use Point blank shot with a ranged weapon."); + ai_SetLastAction(oCreature, AI_LAST_ACTION_MOVE); + ActionMoveToObject(oNearestEnemy, TRUE, AI_RANGE_CLOSE); + ActionDoCommand(ExecuteScript("0e_do_combat_rnd", oCreature)); + return TRUE; + } + } + else if(fDistance < AI_RANGE_LONG) + { + // Lets move back a little, too far and we miss attacks! + if(AI_DEBUG) ai_Debug("0i_combat", "3374", GetName(oCreature) + " is moving away from " + + GetName(oNearestEnemy) + "[2.0] to use a ranged weapon."); + ai_SetLastAction(oCreature, AI_LAST_ACTION_MOVE); + ActionMoveAwayFromObject(oNearestEnemy, TRUE, 2.0); + ActionDoCommand(ExecuteScript("0e_do_combat_rnd", oCreature)); + return TRUE; + } + // If we have sneak attack then we want to be within 30' [9 meters]. if(GetHasFeat(FEAT_SNEAK_ATTACK, oCreature)) { if(fDistance > AI_RANGE_CLOSE) @@ -3432,7 +4004,7 @@ int ai_CheckRangedCombatPosition(object oCreature, object oTarget, int nAction) ActionDoCommand(ExecuteScript("0e_do_combat_rnd", oCreature)); return TRUE; } -} + } return FALSE; } int ai_CheckMeleeCombatPosition(object oCreature, object oTarget, int nAction, int nBaseItemType = 0) @@ -3496,3 +4068,246 @@ int ai_CheckCombatPosition(object oCreature, object oTarget, int nInMelee, int n // If we are in melee we might need to move out of combat. return ai_CheckMeleeCombatPosition(oCreature, oTarget, nAction, nBaseItemType); } +//:: Calculates total Shield AC bonuses from all sources +int ai_GetTotalShieldACBonus(object oCreature) +{ + int nShieldBonus = 0; + object oItem; + // Check left hand for shield + oItem = GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oCreature); + if (GetIsObjectValid(oItem)) + { + int nBaseItem = GetBaseItemType(oItem); + if (nBaseItem == BASE_ITEM_SMALLSHIELD || + nBaseItem == BASE_ITEM_LARGESHIELD || + nBaseItem == BASE_ITEM_TOWERSHIELD) + { + nShieldBonus += GetItemACValue(oItem); + if(AI_DEBUG) ai_Debug("0i_combat", "3534","ai_GetTotalShieldACBonus: Found Shield AC, bonus = " + IntToString(nShieldBonus)+"."); + } + } + // Check creature weapon slots for shield AC bonus + oItem = GetItemInSlot(INVENTORY_SLOT_CWEAPON_L, oCreature); + if(GetIsObjectValid(oItem)) nShieldBonus += GetItemACValue(oItem); + oItem = GetItemInSlot(INVENTORY_SLOT_CWEAPON_R, oCreature); + if(GetIsObjectValid(oItem)) nShieldBonus += GetItemACValue(oItem); + oItem = GetItemInSlot(INVENTORY_SLOT_CWEAPON_B, oCreature); + if(GetIsObjectValid(oItem)) nShieldBonus += GetItemACValue(oItem); + // Add shield AC bonuses from magical effects + effect eEffect = GetFirstEffect(oCreature); + while(GetIsEffectValid(eEffect)) + { + int nACType = GetEffectInteger(eEffect, 0); + int nACAmount = GetEffectInteger(eEffect, 1); + if(GetEffectType(eEffect) == EFFECT_TYPE_AC_INCREASE && nACType == AC_SHIELD_ENCHANTMENT_BONUS) + { + if(AI_DEBUG) ai_Debug("0i_combat", "3560", "ai_GetTotalShieldACBonus: Found Shield AC effect, bonus = " + IntToString(nACAmount)+"."); + nShieldBonus += nACAmount; + } + eEffect = GetNextEffect(oCreature); + } + return nShieldBonus; +} +//:: [PRC8] Returns special grapple size modifier +int ai_GetSpecialGrappleSizeMod(int nSize) +{ + switch(nSize) + { + case -1 /* CREATURE_SIZE_FINE */: return -16; + case 0 /* CREATURE_SIZE_DIMINUTIVE */: return -12; + case CREATURE_SIZE_TINY: return -8; + case CREATURE_SIZE_SMALL: return -4; + case CREATURE_SIZE_MEDIUM: return 0; + case CREATURE_SIZE_LARGE: return 4; + case CREATURE_SIZE_HUGE: return 8; + case 6 /* CREATURE_SIZE_GARGANTUAN */: return 12; + case 7 /* CREATURE_SIZE_COLOSSAL */: return 16; + } + return 0; +} +//:: [PRC8] Returns TRUE if oTarget is a good candidate for Tripping +int ai_CanITrip(object oCreature, object oTarget) +{ + //:: Sanity check + if(!GetIsObjectValid(oCreature) || !GetIsObjectValid(oTarget)) return FALSE; + if(!GetHasFeat(2822, oCreature)) + return FALSE; + if(AI_DEBUG) ai_Debug("0i_combat", "3594", "ai_CanITrip: Sanity Checks PASSED!"); + //:: Get stats + int nStrTripper = GetAbilityModifier(ABILITY_STRENGTH, oCreature); + int nStrTarget = GetAbilityModifier(ABILITY_STRENGTH, oTarget); + int nDexTarget = GetAbilityModifier(ABILITY_DEXTERITY, oTarget); + //:: Defender uses best of STR or DEX + int nDefenderMod = (nDexTarget > nStrTarget) ? nDexTarget : nStrTarget; + //:: Tripper bonuses + if (GetHasFeat(2807, oCreature)) //:: FEAT_IMPROVED_TRIP + { // +4 from Improved Trip + nStrTripper += 4; + } + //:: Get sizes + int nSizeTripper = GetCreatureSize(oCreature); + int nSizeTarget = GetCreatureSize(oTarget); + //:: Size mod = 4 * (size - medium) + nStrTripper += (nSizeTripper - CREATURE_SIZE_MEDIUM) * 4; + nDefenderMod += (nSizeTarget - CREATURE_SIZE_MEDIUM) * 4; + int nStability = 0; + //:: Extra Stability if creature is dwarf or quadruped + if(GetRacialType(oTarget) == RACIAL_TYPE_DWARF || + GetRacialType(oTarget) == RACIAL_TYPE_ANIMAL || + GetRacialType(oTarget) == RACIAL_TYPE_MAGICAL_BEAST || + GetRacialType(oTarget) == RACIAL_TYPE_VERMIN) + { + nStability = 4; + } + nDefenderMod += nStability; + //:: If effective trip mod is too much lower, don't bother + if(nStrTripper + 2 < nDefenderMod) return FALSE; + if(AI_DEBUG) ai_Debug("0i_combat", "3632", "ai_CanITrip: Size Checks PASSED!"); + if(AI_DEBUG) ai_Debug("0i_combat", "3634", "ai_CanITrip: Can use Trip on oTarget."); + return TRUE; +} +//:: [PRC8] Returns TRUE if oTarget is a good candidate for Awesome Blow +int ai_CanIAwesomeBlow(object oCreature, object oTarget) +{ + //:: Sanity check + if(!GetIsObjectValid(oCreature) || !GetIsObjectValid(oTarget)) return FALSE; + if(AI_DEBUG) ai_Debug("0i_combat", "3642", "ai_CanIAwesomeBlow: Sanity check PASSED!"); + //:: Can't Awesome Blow incorporeal creatures + if(GetLocalInt(oTarget, "X2_L_IS_INCORPOREAL")) return FALSE; + if(ai_GetHasEffectType(oTarget, EFFECT_TYPE_ETHEREAL)) return FALSE; + if(AI_DEBUG) ai_Debug("0i_combat", "3650", "ai_CanIAwesomeBlow: Incorporealty check PASSED!"); + //:: Get sizes + int nSizeCreature = GetCreatureSize(oCreature); + int nSizeTarget = GetCreatureSize(oTarget); + //:: Must be larger than target + if (nSizeCreature <= nSizeTarget) return FALSE; + if(AI_DEBUG) ai_Debug("0i_combat", "3660", "ai_CanIAwesomeBlow: Size check PASSED!"); + //:: Get target's AC + int nTargetAC = GetAC(oTarget); + //:: Awesome Blow applies -4 penalty + int nAttackBonus = GetBaseAttackBonus(oCreature) - 4; + //:: Calculate average hit chance. + int nHitChance = 10 + nAttackBonus - nTargetAC; + //:: If hit chance <= 50%, don’t bother + if (nHitChance <= 5) return FALSE; + if(AI_DEBUG) ai_Debug("0i_combat", "3674", "ai_CanIAwesomeBlow: Attack check PASSED!"); + if(AI_DEBUG) ai_Debug("0i_combat", "3676", "ai_CanIAwesomeBlow: Can use Awesome Blow on oTarget."); + return TRUE; +} +//:: [PRC8] Returns TRUE if oTarget is a good candidate for Overrun +int ai_CanIOverrun(object oCreature, object oTarget) +{ + //:: FEAT_OVERRUN (2811) + //:: FEAT_IMPROVED_OVERRUN (2805) + //:: Sanity check + if (!GetIsObjectValid(oCreature) || !GetIsObjectValid(oTarget)) return FALSE; + if(AI_DEBUG) ai_Debug("0i_combat", "1281", "ai_CanIOverrun: Sanity Check PASSED!"); + //:: Get stats + int nStrRunner = GetAbilityModifier(ABILITY_STRENGTH, oCreature); + int nStrTarget = GetAbilityModifier(ABILITY_STRENGTH, oTarget); + int nDexTarget = GetAbilityModifier(ABILITY_DEXTERITY, oTarget); + //:: Defender uses best of STR or DEX + int nDefenderMod = (nDexTarget > nStrTarget) ? nDexTarget : nStrTarget; + //:: Overruner bonuses + if (GetHasFeat(2805, oCreature)) + { // +4 from Improved Overrun + nStrRunner += 4; + } + //:: Get sizes + int nSizeRunner = GetCreatureSize(oCreature); + int nSizeTarget = GetCreatureSize(oTarget); + //:: Size mod = 4 * (size - medium) + nStrRunner += (nSizeRunner - CREATURE_SIZE_MEDIUM) * 4; + nDefenderMod += (nSizeTarget - CREATURE_SIZE_MEDIUM) * 4; + int nStability = 0; + //:: Extra Stability if creature is dwarf or quadruped + if(GetRacialType(oTarget) == RACIAL_TYPE_DWARF || + GetRacialType(oTarget) == RACIAL_TYPE_ANIMAL || + GetRacialType(oTarget) == RACIAL_TYPE_MAGICAL_BEAST || + GetRacialType(oTarget) == RACIAL_TYPE_VERMIN) + { + nStability = 4; + } + nDefenderMod += nStability; + //:: If effective STR mod is too much lower, don't bother + if(nStrRunner + 2 < nDefenderMod) return FALSE; + if(AI_DEBUG) ai_Debug("0i_combat", "3731", "ai_CanIOverrun: Size & Stabilty Check PASSED!"); + if(AI_DEBUG) ai_Debug("0i_combat", "3733", "ai_CanIOverrun: Using Overrun on oTarget."); + return TRUE; +} +//:: [PRC8] Returns TRUE if oTarget is a good candidate for Bullrush +int ai_CanIBullrush(object oCreature, object oTarget) +{ + //:: FEAT_BULLRUSH (2810) + //:: FEAT_IMPROVED_BULLRUSH (2806) + //:: FEAT_BULLRUSH_CHARGE (3413) + if(!GetIsObjectValid(oCreature) || !GetIsObjectValid(oTarget)) return FALSE; + if(AI_DEBUG) ai_Debug("0i_combat", "3746", "ai_CanIBullrush: Sanity Check PASSED!"); + //:: Get movement speed + //int nSpeed = StringToInt(Get2DAString("racialtypes", "Endurance", GetRacialType(oCreature))); + float fSpeed = IntToFloat(10 * GetMovementRate(oCreature)); + //:: If target is too far away to reach in one round, return + if(GetDistanceBetween(oCreature, oTarget) > 1.5 * fSpeed) return FALSE; + if(AI_DEBUG) ai_Debug("0i_combat", "3755", "ai_CanIBullrush: Distance Check PASSED!"); + //:: Get attacker Strength modifier + int nStrRusher = GetAbilityModifier(ABILITY_STRENGTH, oCreature); + //:: Defender uses best of STR or DEX + int nStrTarget = GetAbilityModifier(ABILITY_STRENGTH, oTarget); + int nDexTarget = GetAbilityModifier(ABILITY_DEXTERITY, oTarget); + int nDefenderMod = (nDexTarget > nStrTarget) ? nDexTarget : nStrTarget; + //:: Improved Bull Rush bonus + if(GetHasFeat(2806 /* FEAT_IMPROVED_BULLRUSH */, oCreature)) nStrRusher += 4; + //:: Size modifiers + int nSizeRusher = GetCreatureSize(oCreature); + int nSizeTarget = GetCreatureSize(oTarget); + nStrRusher += (nSizeRusher - CREATURE_SIZE_MEDIUM) * 4; + nDefenderMod += (nSizeTarget - CREATURE_SIZE_MEDIUM) * 4; + + //:: Stability bonus (+4) for dwarves, quadrupeds, etc. + int nRace = GetRacialType(oTarget); + if (nRace == RACIAL_TYPE_DWARF || + nRace == RACIAL_TYPE_ANIMAL || + nRace == RACIAL_TYPE_MAGICAL_BEAST || + nRace == RACIAL_TYPE_VERMIN) + { + nDefenderMod += 4; + } + //:: Require at least +2 margin to attempt + if (nStrRusher + 2 < nDefenderMod) return FALSE; + if(AI_DEBUG) ai_Debug("0i_combat", "3789", "ai_CanIBullrush: Size & Stability Check PASSED!"); + if(AI_DEBUG) ai_Debug("0i_combat", "3791", "ai_CanIBullrush: Can use Bullrush on oTarget."); + return TRUE; +} +//:: [PRC8] Returns TRUE if oTarget is a good candidate for Grappling +int ai_CanIGrapple(object oCreature, object oTarget) +{ + //:: FEAT_CM_GRAPPLE (3414) + //:: FEAT_IMPROVED_GRAPPLE (2804) + //:: FEAT_DEVASTATING_GRAPPLE (4246) + //:: Sanity checks + if (!GetIsObjectValid(oCreature) || !GetIsObjectValid(oTarget)) return FALSE; + if (!GetHasFeat(3414, oCreature)) return FALSE; + //:: Can't grapple incorporeal or gaseous creatures + if (GetLocalInt(oTarget, "X2_L_IS_INCORPOREAL") || ai_GetHasEffectType(oTarget, EFFECT_TYPE_ETHEREAL)) return FALSE; + int nSizeCreature = GetCreatureSize(oCreature); + int nSizeTarget = GetCreatureSize(oTarget); + //:: Automatically fail if target is two or more size categories larger + if (nSizeTarget - nSizeCreature >= 2) return FALSE; + //:: Get BAB and STR for grapple calculation + int nBAB = GetBaseAttackBonus(oCreature); + int nStrMod = GetAbilityModifier(ABILITY_STRENGTH, oCreature); + int nSizeMod = ai_GetSpecialGrappleSizeMod(nSizeCreature); + int nBonusGrapple = 0; + if (GetHasFeat(2804 /*Improved Grapple*/, oCreature)) nBonusGrapple += 2; + if (GetHasFeat(4246 /*Devastating Grapple*/, oCreature)) nBonusGrapple += 5; + int nGrappleScore = nBAB + nStrMod + nSizeMod + nBonusGrapple; + //:: Estimate target's grapple score defensively + int nTargetStrMod = GetAbilityModifier(ABILITY_STRENGTH, oTarget); + int nTargetSizeMod = ai_GetSpecialGrappleSizeMod(nSizeTarget); + int nTargetBAB = GetBaseAttackBonus(oTarget); + int nTargetGrapple = nTargetBAB + nTargetStrMod + nTargetSizeMod; + int nWinChance = 10 + nGrappleScore - nTargetGrapple; + //:: If chance to win grapple check < 60%, don’t bother + if (nWinChance < 6) return FALSE; + if(AI_DEBUG) ai_Debug("0i_combat", "3743", "Can use Grapple on oTarget."); return TRUE; +} diff --git a/_module/nss/0i_constants.nss b/_module/nss/0i_constants.nss index bb7dbe8..59ecab6 100644 --- a/_module/nss/0i_constants.nss +++ b/_module/nss/0i_constants.nss @@ -7,7 +7,7 @@ Changes to any constants will not take effect until the scripts are recompiled. */////////////////////////////////////////////////////////////////////////////// -const string PHILOS_VERSION = "Philos' Enhancing Player System (PEPS) version:07.20.25"; +const string PHILOS_VERSION = "Philos' Enhancing Player System (PEPS) version:11.16.25"; // The following constants are designed to be changed to allow the AI to work // differently based on what a developer wants. // If you change these constants make sure the database has been removed @@ -18,7 +18,7 @@ const string PHILOS_VERSION = "Philos' Enhancing Player System (PEPS) version:07 // This will only work if you are using the PEPS menu system. const int AI_DEBUG = FALSE; // Defines if we are compiling for single player or a server. Always on for servers! -const int AI_SERVER = FALSE; +const int AI_SERVER = TRUE; // The number of classes allowed for a creature to take in the server/module. const int AI_MAX_CLASSES_PER_CHARACTER = 8; // Taunts cool down time before the AI attemps another Taunt. @@ -35,14 +35,14 @@ const int AI_MONSTER_HEAL_OUT_COMBAT_CHANCE = 70; const int AI_HENCHMAN_WIDGET = TRUE; // Change the Custom token number if it conflicts with your server. const int AI_BASE_CUSTOM_TOKEN = 1000; -// Delay between creatures casting Buff spells. Must be minimum of 0.1 seconds. -const float AI_HENCHMAN_BUFF_DELAY = 0.2; //******************* These can be changed within the game ******************* // Moral checks on or off. If wounded they will make Will saves, if they fail the flee. const int AI_MORAL_CHECKS = FALSE; // Allows monsters to prebuff before combat starts. const int AI_PREBUFF = TRUE; +// Allows monsters to buff with all spells before combat starts. VERY DIFFICULT! +const int AI_FULL_BUFF = FALSE; // Allows monsters cast summons spells when prebuffing. const int AI_PRESUMMONS = TRUE; // Allows monsters to use tactical AI scripts such as ambush, flanker, ranged. @@ -111,8 +111,13 @@ const int AI_SCOUT_AHEAD_ON = TRUE; const int AI_OPEN_INVENTORY = TRUE; // Allows players to have associates pickup loot. const int AI_PICKUP_LOOT = TRUE; -// Allows players to remove a henchman. +// Allows players to take any henchman that is standing around. +const int AI_ALLOW_TAKING_HENCHMAN = FALSE; +// Allows players to remove a henchman through PEPS. const int AI_REMOVE_HENCHMAN_ON = FALSE; +// Allows players to toggle patrolling ahead via the radial menu for remove henchman. +// Used on my server as a way to toggle patrolling ahead via the radial menu. +const int AI_PATROL_AHEAD_RADIAL_OPTION = FALSE; //***************************** Health Constants ***************************** // % of health for when a creature is considered wounded. const int AI_HEALTH_WOUNDED = 50; @@ -141,7 +146,9 @@ const string AI_EFFECT_ICON_NUI = "ai_effect_icon_nui"; // The following constants are core constants and changing any of these without // understanding the whole system could cause unforseen results. // CHANGE AT YOUR OWN RISK. -// Variable used to asave a monster object for changing. +// Variable used to check if the module is running as a server. +const string AI_IS_SERVER = "AI_IS_SERVER"; +// Variable used to save a monster object for changing. const string AI_MONSTER_OBJECT = "AI_MONSTER_OBJECT"; // Variable used to save a monsters json for changing. const string AI_MONSTER_JSON = "AI_MONSTER_JSON"; @@ -160,7 +167,7 @@ const string AI_PLUGIN_SET = "AI_PLUGIN_SET"; // Monster modification variable to let PEPS know what mods are available. const string AI_MONSTER_MOD_JSON = "AI_MONSTER_MOD_JSON"; // The maximum number of henchman the code works with. -const int AI_MAX_HENCHMAN = 12; +const int AI_MAX_HENCHMAN = 30; // Delay between Henchman casting Healing spells. Must be minimum of 0.5 seconds. const float AI_HENCHMAN_HEALING_DELAY = 6.0; // A variable that can be set on creatures to stop mobile animations. @@ -219,7 +226,6 @@ const string AI_I_AM_DEAD = "AI_I_AM_DEAD"; const string AI_I_AM_DISEASED = "AI_I_AM_DISEASED"; const string AI_I_AM_POISONED = "AI_I_AM_POISONED"; const string AI_I_AM_WEAK = "AI_I_AM_WEAK"; -const int AI_ALLY_SEES_AN_ENEMY = 1; const int AI_ALLY_HEARD_AN_ENEMY = 2; const int AI_ALLY_ATKED_BY_WEAPON = 3; const int AI_ALLY_ATKED_BY_SPELL = 4; @@ -228,6 +234,7 @@ const int AI_ALLY_IS_DEAD = 6; const int AI_ALLY_IS_DISEASED = 7; const int AI_ALLY_IS_POISONED = 8; const int AI_ALLY_IS_WEAK = 9; +const int AI_ALLY_SEES_AN_ENEMY = 10; const string AI_MY_TARGET = "AI_MY_TARGET"; // Constant used by monsters to reduce checks while searching for unseen targets. const string AI_AM_I_SEARCHING = "AI_AM_I_SEARCHING"; @@ -238,6 +245,8 @@ const string AI_IS_INVISIBLE = "AI_IS_INVISIBLE"; // Constants used in combat to keep track of a creatures last action. // 0+ is the last spell cast from the line number in Spells.2da. const string sLastActionVarname = "AI_LAST_ACTION"; +// Constants used in combat to keep track of a creatures last action time. +const string sLastActionTimeVarname = "AI_LAST_ACTION_TIME"; const int AI_LAST_ACTION_CAST_SPELL = -1; const int AI_LAST_ACTION_NONE = -2; const int AI_LAST_ACTION_MELEE_ATK = -3; @@ -255,6 +264,8 @@ const string AI_ATTACKED_PHYSICAL = "AI_ATTACKED_PHYSICAL"; const string AI_ATTACKED_SPELL = "AI_ATTACKED_SPELL"; // Variable name used to keep track of a creatures normal polymorph form. const string AI_NORMAL_FORM = "AI_NORMAL_FORM"; +// Variable name used to have associates defined as Polymorphed. +const string AI_POLYMORPHED = "AI_POLYMORPHED"; // Variable name used to keep track if a creature has been buffed yet. const string AI_CASTER_BUFFS_SET = "AI_CASTER_BUFFS_SET"; // Variable name used to keep track of rounds in combat for a custom ai script. @@ -320,6 +331,7 @@ const int AI_CONDITION_CONFUSED = 0x00020000; const int AI_CONDITION_CURSE = 0x00040000; const int AI_CONDITION_PARALYZE = 0x00080000; const int AI_CONDITION_DOMINATED = 0x00100000; +const int AI_CONDITION_DEAD = 0x00200000; // Database constants for Associate modes. const string AI_MODE_DB_TABLE = "AI_MODE_DB_TABLE"; // Bitwise constants for Associate modes that are used with Get/SetAssociateMode(). @@ -394,30 +406,31 @@ const int AI_MAGIC_NO_SPONTANEOUS_CURE = 0x00000800; // Caster will stop using s const string AI_NO_NUI_SAVE = "AI_NO_NUI_SAVE"; // Bitwise menu constants for Widget buttons that are used with Get/SetAssociateWidgetButtons(). const string sWidgetButtonsVarname = "ASSOCIATE_WIDGET_BUTTONS"; -const int BTN_WIDGET_OFF = 0x00000001; // Removes the widget from the screen, For PC it removes all associates. -const int BTN_WIDGET_LOCK = 0x00000002; // Locks the widget to the current coordinates. -const int BTN_CMD_GUARD = 0x00000004; // Command associates to Guard Me. PC widget only. -const int BTN_CMD_FOLLOW = 0x00000008; // Command associates to Follow. PC widget only. -const int BTN_CMD_HOLD = 0x00000010; // Command associates to Stand Ground. PC widget only. -const int BTN_CMD_ATTACK = 0x00000020; // Command associates to Attack Nearest. PC widget only. -const int BTN_BUFF_REST = 0x00000040; // Buffs with long duration spells after resting. Associate widget only. -const int BTN_BUFF_SHORT = 0x00000080; // Buffs with short duration spells. -const int BTN_BUFF_LONG = 0x00000100; // Buffs with long duration spells. -const int BTN_BUFF_ALL = 0x00000200; // Buffs with all spells. -const int BTN_CMD_ACTION = 0x00000400; // Command associate to do an action. -const int BTN_CMD_GHOST_MODE = 0x00000800; // Toggle's associates ghost mode. -const int BTN_CMD_AI_SCRIPT = 0x00001000; // Toggle's special tactics ai scripts. -const int BTN_CMD_PLACE_TRAP = 0x00002000; // A trapper may place traps. -const int BTN_CMD_CAMERA = 0x00004000; // Places camera view on associate. -const int BTN_CMD_INVENTORY = 0x00008000; // Opens inventory of associate. -const int BTN_CMD_FAMILIAR = 0x00010000; // Summons familiar. -const int BTN_CMD_COMPANION = 0x00020000; // Summons Companion. -const int BTN_CMD_SEARCH = 0x00040000; // Command all associates to use search mode. PC widget only. -const int BTN_CMD_STEALTH = 0x00080000; // Command all associates to use stealth mode. PC widget only. -const int BTN_CMD_SCOUT = 0x00100000; // Command associate to scout ahead of the part. -const int BTN_CMD_SPELL_WIDGET = 0x00200000; // Allows adding or removing spells from Spell Widget. -const int BTN_CMD_JUMP_TO = 0x00400000; // Player can make associates jump to them. -const int BTN_WIDGET_VERTICAL = 0x80000000; // Widget will be displayed vertical. +const int BTN_WIDGET_OFF = 0x00000001; // Removes the widget from the screen, For PC it removes all associates. +const int BTN_WIDGET_LOCK = 0x00000002; // Locks the widget to the current coordinates. +const int BTN_CMD_GUARD = 0x00000004; // Command associates to Guard Me. PC widget only. +const int BTN_CMD_FOLLOW = 0x00000008; // Command associates to Follow. PC widget only. +const int BTN_CMD_HOLD = 0x00000010; // Command associates to Stand Ground. PC widget only. +const int BTN_CMD_ATTACK = 0x00000020; // Command associates to Attack Nearest. PC widget only. +const int BTN_BUFF_REST = 0x00000040; // Buffs with long duration spells after resting. Associate widget only. +const int BTN_BUFF_SHORT = 0x00000080; // Buffs with short duration spells. +const int BTN_BUFF_LONG = 0x00000100; // Buffs with long duration spells. +const int BTN_BUFF_ALL = 0x00000200; // Buffs with all spells. +const int BTN_CMD_ACTION = 0x00000400; // Command associate to do an action. +const int BTN_CMD_GHOST_MODE = 0x00000800; // Toggle's associates ghost mode. +const int BTN_CMD_AI_SCRIPT = 0x00001000; // Toggle's special tactics ai scripts. +const int BTN_CMD_PLACE_TRAP = 0x00002000; // A trapper may place traps. +const int BTN_CMD_CAMERA = 0x00004000; // Places camera view on associate. +const int BTN_CMD_INVENTORY = 0x00008000; // Opens inventory of associate. +const int BTN_CMD_FAMILIAR = 0x00010000; // Summons familiar. +const int BTN_CMD_COMPANION = 0x00020000; // Summons Companion. +const int BTN_CMD_SEARCH = 0x00040000; // Command all associates to use search mode. PC widget only. +const int BTN_CMD_STEALTH = 0x00080000; // Command all associates to use stealth mode. PC widget only. +const int BTN_CMD_SCOUT = 0x00100000; // Command associate to scout ahead of the part. +const int BTN_CMD_SPELL_WIDGET = 0x00200000; // Allows adding or removing spells from Spell Widget. +const int BTN_CMD_JUMP_TO = 0x00400000; // Player can make associates jump to them. +const int BTN_ASSOC_WIDGETS_OFF = 0x00800000; // Turns all associate widgets on/off. +const int BTN_WIDGET_VERTICAL = 0x80000000; // Widget will be displayed vertical. // Bitwise menu constants for Associate AI buttons that are used with Get/SetAssociateAIButtons(). const string sAIButtonsVarname = "ASSOCIATE_AI_BUTTONS"; const int BTN_AI_FOR_PC = 0x00000001; // PC use AI. PC widget only. @@ -521,6 +534,8 @@ const string AI_ASSOCIATE_PERCEPTION = "AI_PERCEPTION_RANGE"; const string AI_ASSOC_PERCEPTION_DISTANCE = "AI_ASSOC_PERCEPTION_DISTANCE"; // Variable that holds the open doors range of the henchman. const string AI_OPEN_DOORS_RANGE = "AI_OPEN_DOORS_RANGE"; +// Variable that holds the delay for casting buff spells. +const string AI_DELAY_BUFF_CASTING = "AI_DELAY_BUFF_CASTING"; // Variable that holds the Spell widgets json data. const string AI_SPELLS_WIDGET = "AI_SPELLS_WIDGET"; // The number of Buff Groups @@ -548,6 +563,8 @@ const string AI_PC_LOCKED_TARGET = "AI_PC_LOCKED_TARGET"; const string AI_TALENT_IMMUNITY = "AI_TALENT_IMMUNITY"; // Variables keeps track of the maximum level for the talent category. const string AI_MAX_TALENT = "AI_MAX_TALENT_"; +// Variables keeps track of the maximum level for the talent level. +const string AI_MAX_LEVEL = "AI_MAX_LEVEL_"; // Backward compatability constants. const int X2_EVENT_CONCENTRATION_BROKEN = 12400; // Variable set on the module if the module is using PRC. @@ -568,6 +585,12 @@ const string AI_MODULE_GUI_EVENT = "AI_MODULE_GUI_EVENT"; const string AI_TARGET_MODE = "AI_TARGET_MODE"; // Variable used on the player to define which associate triggered the OnPlayer Target. const string AI_TARGET_ASSOCIATE = "AI_TARGET_ASSOCIATE"; +// Variable use on the player to define if the player is using target mode on an associate. +const string AI_TARGET_MODE_ON = "AI_TARGET_MODE_ON"; +// Variable used on the player to define what associate has Target Mode set on it. +const string AI_TARGET_MODE_ASSOCIATE = "AI_TARGET_MODE_ASSOCIATE"; +// Variable used on a creature to define how long ago their immunities were saved. +const string sIPTimeStampVarname = "AI_IP_TIMESTAMP"; // Bitwise constants for immune damage item properties that is used with Get/SetItemProperty(). const string sIPImmuneVarname = "AI_IP_IMMUNE"; // Bitwise constants for resisted damage item properties that is used with Get/SetItemProperty(). @@ -585,6 +608,8 @@ const string AI_RULE_DEBUG_CREATURE = "AI_RULE_DEBUG_CREATURE"; const string AI_RULE_MORAL_CHECKS = "AI_RULE_MORAL_CHECKS"; // Allows monsters to prebuff before combat starts. const string AI_RULE_BUFF_MONSTERS = "AI_RULE_BUFF_MONSTERS"; +// Allows monsters to prebuff with all defensive spells before combat starts. +const string AI_RULE_FULL_BUFF_MONSTERS = "AI_RULE_FULL_BUFF_MONSTERS"; // Allows monsters to use the ambush AI scripts. const string AI_RULE_AMBUSH = "AI_RULE_AMBUSH"; // Enemies may summon familiars and Animal companions and will be randomized. diff --git a/_module/nss/0i_gui_events.nss b/_module/nss/0i_gui_events.nss index 4628cf3..bc90d25 100644 --- a/_module/nss/0i_gui_events.nss +++ b/_module/nss/0i_gui_events.nss @@ -12,7 +12,7 @@ *///////////////////////////////////////////////////////////////////////////////////////////////////// #include "0i_constants" #include "0i_nui" -void ai_SetupModuleGUIEvents(object oCreature) +void ai_SetupModuleGUIEvents() { object oModule = GetModule(); string sModuleGUIEvents = GetEventScript(oModule, EVENT_SCRIPT_MODULE_ON_PLAYER_GUIEVENT); diff --git a/_module/nss/0i_main.nss b/_module/nss/0i_main.nss index e32aa71..ba36f4a 100644 --- a/_module/nss/0i_main.nss +++ b/_module/nss/0i_main.nss @@ -25,6 +25,8 @@ const string AI_DM_TABLE = "DM_TABLE"; // Sets PEPS RULES from the database to the module. // Creates default rules if they do not exist. void ai_SetAIRules(); +// Returns TRUE if the module is being run as a server. +int ai_GetIsServer(); // Returns TRUE if oCreature is controlled by a player. int ai_GetIsCharacter(object oCreature); // Returns TRUE if oCreature is controlled by a dungeon master. @@ -32,6 +34,9 @@ int ai_GetIsDungeonMaster(object oCreature); // Returns the Player of oAssociate even if oAssociate is the player. // If there is no player associated with oAssociate then it returns OBJECT_INVALID. object ai_GetPlayerMaster(object oAssociate); +// Returns the top master of oAssociate, for example a henchmen summons a bat, +// this will return the henchman's player. +object ai_GetTopMaster(object oAssociate); // Returns the percentage of hit points oCreature has left. int ai_GetPercHPLoss(object oCreature); // Returns a rolled result from sDice string. @@ -129,6 +134,9 @@ void ai_SetAIRules() // Allows monsters to prebuff before combat starts. SetLocalInt(oModule, AI_RULE_BUFF_MONSTERS, AI_PREBUFF); jRules = JsonObjectSet(jRules, AI_RULE_BUFF_MONSTERS, JsonInt(AI_PREBUFF)); + // Allows monsters to prebuff with all spells before combat starts. + SetLocalInt(oModule, AI_RULE_FULL_BUFF_MONSTERS, AI_FULL_BUFF); + jRules = JsonObjectSet(jRules, AI_RULE_FULL_BUFF_MONSTERS, JsonInt(AI_FULL_BUFF)); // Allows monsters cast summons spells when prebuffing. SetLocalInt(oModule, AI_RULE_PRESUMMON, AI_PRESUMMONS); jRules = JsonObjectSet(jRules, AI_RULE_PRESUMMON, JsonInt(AI_PRESUMMONS)); @@ -215,6 +223,9 @@ void ai_SetAIRules() // Allows monsters to prebuff before combat starts. bValue = JsonGetInt(JsonObjectGet(jRules, AI_RULE_BUFF_MONSTERS)); SetLocalInt(oModule, AI_RULE_BUFF_MONSTERS, bValue); + // Allows monsters to buff with all spells before combat starts. + bValue = JsonGetInt(JsonObjectGet(jRules, AI_RULE_FULL_BUFF_MONSTERS)); + SetLocalInt(oModule, AI_RULE_FULL_BUFF_MONSTERS, bValue); // Allows monsters cast summons spells when prebuffing. bValue = JsonGetInt(JsonObjectGet(jRules, AI_RULE_PRESUMMON)); SetLocalInt(oModule, AI_RULE_PRESUMMON, bValue); @@ -307,13 +318,17 @@ void ai_SetAIRules() SetLocalInt(oModule, sDMAIAccessVarname, bValue); } } +int ai_GetIsServer() +{ + return GetLocalInt(GetModule(), AI_IS_SERVER) || AI_SERVER; +} int ai_GetIsCharacter(object oCreature) { - return (GetIsPC(oCreature) && !GetIsDM(oCreature) && !GetIsDMPossessed(oCreature)); + return (GetIsPC(oCreature) && !GetIsDM(oCreature) && !GetIsDMPossessed(oCreature) && !GetIsPlayerDM(oCreature)); } int ai_GetIsDungeonMaster(object oCreature) { - return (GetIsDM(oCreature) || GetIsDMPossessed(oCreature)); + return (GetIsDM(oCreature) || GetIsDMPossessed(oCreature) || GetIsPlayerDM(oCreature)); } object ai_GetPlayerMaster(object oAssociate) { @@ -322,6 +337,16 @@ object ai_GetPlayerMaster(object oAssociate) if(ai_GetIsCharacter(oMaster)) return oMaster; return OBJECT_INVALID; } +object ai_GetTopMaster(object oAssociate) +{ + object oMaster = GetMaster(oAssociate); + while(oMaster != OBJECT_INVALID) + { + if(GetMaster(oMaster) == OBJECT_INVALID) break; + oMaster = GetMaster(oMaster); + } + return oMaster; +} int ai_GetPercHPLoss(object oCreature) { int nHP = GetCurrentHitPoints(oCreature); @@ -862,12 +887,14 @@ void ai_SetupAIData(object oPlayer, object oAssociate, string sAssociateType) // We keep it for now as we don't want to move other data. jAIData = JsonArrayInsert(jAIData, JsonInt(11)); // 7 - Associate Perception DistanceDistance. SetLocalInt(oAssociate, AI_ASSOCIATE_PERCEPTION, 11); - SetLocalFloat(oAssociate, AI_ASSOC_PERCEPTION_DISTANCE, 20.0); + SetLocalFloat(oAssociate, AI_ASSOC_PERCEPTION_DISTANCE, 25.0); jAIData = JsonArrayInsert(jAIData, JsonString("")); // 8 - Associate Combat Tactics. jAIData = JsonArrayInsert(jAIData, JsonFloat(20.0)); // 9 - Open Doors check range. SetLocalFloat(oAssociate, AI_OPEN_DOORS_RANGE, 20.0); json jSpells = JsonArray(); jAIData = JsonArrayInsert(jAIData, jSpells); // 10 - Castable spells. + jAIData = JsonArrayInsert(jAIData, JsonFloat(0.1)); // 11 - Delay for casting buff spells. + SetLocalFloat(oAssociate, AI_DELAY_BUFF_CASTING, 0.1); ai_SetAssociateDbJson(oPlayer, sAssociateType, "aidata", jAIData, AI_TABLE); } void ai_SetupLootFilters(object oPlayer, object oAssociate, string sAssociateType) @@ -979,6 +1006,8 @@ void ai_RestoreDatabase(object oPlayer, object oAssociate, string sAssociateType SetLocalJson(oPlayer, AI_SPELLS_WIDGET, jValue); } jAIData = JsonArrayInsert(jAIData, jValue); + fValue = GetLocalFloat(oAssociate, AI_DELAY_BUFF_CASTING); + jAIData = JsonArrayInsert(jAIData, JsonFloat(fValue)); ai_SetAssociateDbJson(oPlayer, sAssociateType, "aidata", jAIData); // ********** LootFilters ********** json jLootFilters = JsonArray(); @@ -1080,6 +1109,14 @@ void ai_CheckAssociateData(object oPlayer, object oAssociate, string sAssociateT ai_SetAssociateDbJson(oPlayer, sAssociateType, "aidata", jAIData); SetLocalJson(oPlayer, AI_SPELLS_WIDGET, jSpellsWidget); } + json jSpellDelay = JsonArrayGet(jAIData, 11); + if(JsonGetType(jSpellDelay) == JSON_TYPE_NULL) + { + jAIData = JsonArrayInsert(jAIData, JsonFloat(0.1)); + ai_SetAssociateDbJson(oPlayer, sAssociateType, "aidata", jAIData); + SetLocalFloat(oAssociate, AI_DELAY_BUFF_CASTING, 0.1); + } + else SetLocalFloat(oAssociate, AI_DELAY_BUFF_CASTING, JsonGetFloat(jSpellDelay)); } // ********** LootFilters ********** json jLootFilters = ai_GetAssociateDbJson(oPlayer, sAssociateType, "lootfilters"); @@ -1140,7 +1177,7 @@ void ai_SetupDMData(object oPlayer, string sName) void ai_CheckDMData(object oPlayer) { //ai_Debug("0i_main", "898", "Checking data for DM: " + GetName(oPlayer)); - string sName = ai_RemoveIllegalCharacters(GetName(oPlayer)); + string sName = ai_RemoveIllegalCharacters(ai_StripColorCodes(GetName(oPlayer))); // ********** Buttons ********** json jButtons = ai_GetCampaignDbJson("buttons", sName, AI_DM_TABLE); // if there is no saved AImodes then set the defaults. @@ -1241,7 +1278,7 @@ json ai_CheckOldPluginJson(object oPC) json ai_UpdatePluginsForPC(object oPC) { // Check if the server is running or single player. - if(!AI_SERVER) return ai_CheckOldPluginJson(oPC); + if(!ai_GetIsServer()) return ai_CheckOldPluginJson(oPC); int nJsonType, nCounter, nIndex, bWidget, bAllow; string sScript, sName, sIcon; json jServerPlugins = ai_GetCampaignDbJson("plugins"); @@ -1283,7 +1320,7 @@ json ai_UpdatePluginsForPC(object oPC) json ai_UpdatePluginsForDM(object oPC) { int nJsonType, nCounter, nIndex, bWidget, bAllow; - string sName, sIcon, sDbName = ai_RemoveIllegalCharacters(GetName(oPC)); + string sName, sIcon, sDbName = ai_RemoveIllegalCharacters(ai_StripColorCodes(GetName(oPC))); json jServerPlugins = ai_GetCampaignDbJson("plugins"); ai_CheckDMDataAndInitialize(oPC); json jDMPlugin, jDMPlugins = ai_GetCampaignDbJson("plugins", sDbName, AI_DM_TABLE); @@ -1323,7 +1360,7 @@ void ai_StartupPlugins(object oPC) int bUpdatePlugins; string sScript; json jPlugins; - if(GetIsDM(oPC)) jPlugins = ai_UpdatePluginsForDM(oPC); + if(ai_GetIsDungeonMaster(oPC)) jPlugins = ai_UpdatePluginsForDM(oPC); else jPlugins = ai_UpdatePluginsForPC(oPC); // We delete this so each mod can be added that legally loads. DeleteLocalJson(GetModule(), AI_MONSTER_MOD_JSON); diff --git a/_module/nss/0i_menus.nss b/_module/nss/0i_menus.nss index 756797c..472d0dd 100644 --- a/_module/nss/0i_menus.nss +++ b/_module/nss/0i_menus.nss @@ -51,7 +51,7 @@ void ai_CreateDescriptionNUI(object oPC, json jSpell, int nSpell = 0); string ai_GetRandomTip() { int nRoll; - if(AI_SERVER) nRoll = Random(26); + if(ai_GetIsServer()) nRoll = Random(26); else nRoll = Random(46); return Get2DAString("ai_messages", "Text", nRoll); } @@ -344,7 +344,7 @@ void ai_CreateAIMainNUI(object oPC) int nMonsterAI = (ResManGetAliasFor("ai_default", RESTYPE_NCS) != ""); int nAssociateAI = (ResManGetAliasFor("ai_a_default", RESTYPE_NCS) != ""); string sText = " [Single player]"; - if(AI_SERVER) sText = " [Server]"; + if(ai_GetIsServer()) sText = " [Server]"; // ************************************************************************* Width / Height // Row 1 ******************************************************************* 500 / 73 json jRow = JsonArrayInsert(JsonArray(), NuiSpacer()); @@ -352,15 +352,17 @@ void ai_CreateAIMainNUI(object oPC) jRow = JsonArrayInsert(jRow, NuiSpacer()); // Add row to the column. json jCol = JsonArrayInsert(JsonArray(), NuiRow(jRow)); - // Row 2 ******************************************************************* 500 / 101 - jRow = CreateLabel(JsonArray(), "", "lbl_ai_info", 510.0f, 20.0f, NUI_HALIGN_CENTER); - // Add row to the column. - jCol = JsonArrayInsert(jCol, NuiRow(jRow)); + if(!AI_SERVER) + { + // Row 2 ******************************************************************* 500 / 101 + jRow = CreateLabel(JsonArray(), "", "lbl_ai_info", 510.0f, 20.0f, NUI_HALIGN_CENTER); + // Add row to the column. + jCol = JsonArrayInsert(jCol, NuiRow(jRow)); + } // Row 3 ******************************************************************* 500 / 129 - jRow = CreateButton(JsonArray(), "Plugin Manager", "btn_plugin_manager", 120.0f, 20.0f, -1.0, "btn_plugin_manager_tooltip"); - if(nAssociateAI) jRow = CreateButtonSelect(jRow, "Associate Widgets", "btn_toggle_assoc_widget", 140.0f, 20.0f, "btn_assoc_widget_tooltip"); - jRow = CreateButtonSelect(jRow, "Action Ghost Mode", "btn_action_ghost", 160.0f, 20.0f, "btn_action_ghost_tooltip"); - jRow = CreateButtonSelect(jRow, "Effect Icons", "btn_effect_icon", 100.0f, 20.0f, "btn_effect_icon_tooltip"); + jRow = CreateButton(JsonArray(), "Plugin Manager", "btn_plugin_manager", 175.0f, 20.0f, -1.0, "btn_plugin_manager_tooltip"); + jRow = CreateButtonSelect(jRow, "Action Ghost Mode", "btn_action_ghost", 175.0f, 20.0f, "btn_action_ghost_tooltip"); + jRow = CreateButtonSelect(jRow, "Effect Icons", "btn_effect_icon", 175.0f, 20.0f, "btn_effect_icon_tooltip"); // Add row to the column. jCol = JsonArrayInsert(jCol, NuiRow(jRow)); // Row 4 ******************************************************************* 500 / 157 @@ -408,7 +410,8 @@ void ai_CreateAIMainNUI(object oPC) jGroupRow = CreateTextEditBox(JsonArray(), "sPlaceHolder", "txt_perception_distance", 2, FALSE, 35.0f, 20.0f, "txt_perception_distance_tooltip"); jGroupRow = CreateLabel(jGroupRow, "meters is the distance a monster can respond to allies.", "lbl_perception_distance", 411.0f, 20.0f, NUI_HALIGN_LEFT, 0, 0.0, "txt_perception_distance_tooltip"); jGroupCol = JsonArrayInsert(jGroupCol, NuiRow(jGroupRow)); - jGroupRow = CreateCheckBox(JsonArray(), " Monsters can prebuff before combat starts.", "chbx_buff_monsters", 450.0, 20.0); + jGroupRow = CreateCheckBox(JsonArray(), " Monsters buff before combat starts.", "chbx_buff_monsters", 275.0, 20.0, "chbx_buff_monsters_tooltip"); + jGroupRow = CreateCheckBox(jGroupRow, " Will use all buff spells!", "chbx_full_buff", 210.0, 20.0, "chbx_full_buff_tooltip"); jGroupCol = JsonArrayInsert(jGroupCol, NuiRow(jGroupRow)); jGroupRow = CreateCheckBox(JsonArray(), " Monsters can use summons before combat starts.", "chbx_buff_summons", 450.0, 20.0); jGroupCol = JsonArrayInsert(jGroupCol, NuiRow(jGroupRow)); @@ -448,11 +451,11 @@ void ai_CreateAIMainNUI(object oPC) float fY = JsonGetFloat(JsonObjectGet(jLocations, "y")); // Set the Layout of the window. json jLayout = NuiCol(jCol); - string sName = GetName(oPC); + string sName = ai_StripColorCodes(GetName(oPC)); if(GetStringRight(sName, 1) == "s") sName = sName + "'"; else sName = sName + "'s"; int nToken = SetWindow(oPC, jLayout, AI_MAIN_NUI, sName + " PEPS Main Menu", - fX, fY, 534.0f, fHeight, FALSE, FALSE, TRUE, FALSE, TRUE, "0e_nui"); + fX, fY, 554.0f, fHeight, FALSE, FALSE, TRUE, FALSE, TRUE, "0e_nui"); // Save the associate to the nui for use in 0e_nui json jData = JsonArray(); jData = JsonArrayInsert(jData, JsonString(ObjectToString(oPC))); @@ -464,49 +467,45 @@ void ai_CreateAIMainNUI(object oPC) // Row 1 - Version label. // Row 2 int nUsing; - // Check the monster AI. - string sLocation = ResManGetAliasFor("ai_default", RESTYPE_NCS); - if(sLocation != "") + if(!AI_SERVER) { - nUsing = TRUE; - string sLocation = ResManGetAliasFor("nw_c2_default1", RESTYPE_NCS); - if(sLocation != "OVERRIDE:" && sLocation != "PATCH:peps" && sLocation != "DEVELOPMENT:") nUsing = FALSE; - if(nUsing) sText = "Monster AI working"; - else sText = "Monster AI not working"; + // Check the monster AI. + string sLocation = ResManGetAliasFor("ai_default", RESTYPE_NCS); + if(sLocation != "") + { + nUsing = TRUE; + string sLocation = ResManGetAliasFor("nw_c2_default1", RESTYPE_NCS); + if(sLocation != "OVERRIDE:" && sLocation != "PATCH:peps" && sLocation != "DEVELOPMENT:") nUsing = FALSE; + if(nUsing) sText = "Monster AI working"; + else sText = "Monster AI not working"; + } + else sText = "Monster AI not loaded"; + // Check the associate AI. + sLocation = ResManGetAliasFor("ai_a_default", RESTYPE_NCS); + if(sLocation != "") + { + nUsing = TRUE; + string sLocation = ResManGetAliasFor("nw_ch_ac1", RESTYPE_NCS); + if(sLocation != "OVERRIDE:" && sLocation != "PATCH:peps" && sLocation != "DEVELOPMENT:") nUsing = FALSE; + if(nUsing) sText += ", Associate AI working"; + else sText += ", Associate AI not working"; + } + else sText += ", Associate AI not loaded"; + // Check for PRC. + sLocation = ResManGetAliasFor("prc_ai_fam_percp", RESTYPE_NCS); + if(sLocation != "") sText += ", PRC loaded."; + else + { + // Check the player AI. + sLocation = ResManGetAliasFor("xx_pc_1_hb", RESTYPE_NCS); + if(sLocation != "") sText += ", Player AI loaded."; + else sText += ", Player AI not loaded."; + } + NuiSetBind(oPC, nToken, "lbl_ai_info_label", JsonString(sText)); } - else sText = "Monster AI not loaded"; - // Check the associate AI. - sLocation = ResManGetAliasFor("ai_a_default", RESTYPE_NCS); - if(sLocation != "") - { - nUsing = TRUE; - string sLocation = ResManGetAliasFor("nw_ch_ac1", RESTYPE_NCS); - if(sLocation != "OVERRIDE:" && sLocation != "PATCH:peps" && sLocation != "DEVELOPMENT:") nUsing = FALSE; - if(nUsing) sText += ", Associate AI working"; - else sText += ", Associate AI not working"; - } - else sText += ", Associate AI not loaded"; - // Check for PRC. - sLocation = ResManGetAliasFor("prc_ai_fam_percp", RESTYPE_NCS); - if(sLocation != "") sText += ", PRC loaded."; - else - { - // Check the player AI. - sLocation = ResManGetAliasFor("xx_pc_1_hb", RESTYPE_NCS); - if(sLocation != "") sText += ", Player AI loaded."; - else sText += ", Player AI not loaded."; - } - NuiSetBind(oPC, nToken, "lbl_ai_info_label", JsonString(sText)); // Row 3 NuiSetBind(oPC, nToken, "btn_plugin_manager_event", JsonBool(TRUE)); NuiSetBind(oPC, nToken, "btn_plugin_manager_tooltip", JsonString(" Manages external executable scripts.")); - if(nAssociateAI) - { - NuiSetBind(oPC, nToken, "btn_toggle_assoc_widget_event", JsonBool(TRUE)); - int bWidgetOn = !ai_GetWidgetButton(oPC, BTN_WIDGET_OFF, OBJECT_INVALID, "pc"); - NuiSetBind(oPC, nToken, "btn_toggle_assoc_widget", JsonBool(bWidgetOn)); - NuiSetBind(oPC, nToken, "btn_assoc_widget_tooltip", JsonString(" Turns On/Off all associate widgets.")); - } int bActionGhost = ai_GetAIMode(oPC, AI_MODE_ACTION_GHOST); NuiSetBind(oPC, nToken, "btn_action_ghost", JsonBool (bActionGhost)); NuiSetBind(oPC, nToken, "btn_action_ghost_event", JsonBool(TRUE)); @@ -539,9 +538,15 @@ void ai_CreateAIMainNUI(object oPC) NuiSetBind(oPC, nToken, "txt_ai_difficulty", JsonString(IntToString(GetLocalInt(oModule, AI_RULE_AI_DIFFICULTY)))); NuiSetBindWatch(oPC, nToken, "txt_ai_difficulty", TRUE); NuiSetBind(oPC, nToken, "txt_ai_difficulty_event", JsonBool(TRUE)); - NuiSetBind(oPC, nToken, "chbx_buff_monsters_check", JsonBool(GetLocalInt(oModule, AI_RULE_BUFF_MONSTERS))); + int bMonsterBuff = GetLocalInt(oModule, AI_RULE_BUFF_MONSTERS); + NuiSetBind(oPC, nToken, "chbx_buff_monsters_check", JsonBool(bMonsterBuff)); NuiSetBindWatch(oPC, nToken, "chbx_buff_monsters_check", TRUE); NuiSetBind(oPC, nToken, "chbx_buff_monsters_event", JsonBool(TRUE)); + NuiSetBind(oPC, nToken, "chbx_buff_monsters_tooltip", JsonString(" Monsters will cast all longer duration buff spells just before combat starts.")); + NuiSetBind(oPC, nToken, "chbx_full_buff_check", JsonBool(GetLocalInt(oModule, AI_RULE_FULL_BUFF_MONSTERS))); + NuiSetBindWatch(oPC, nToken, "chbx_full_buff_check", TRUE); + NuiSetBind(oPC, nToken, "chbx_full_buff_event", JsonBool(bMonsterBuff)); + NuiSetBind(oPC, nToken, "chbx_full_buff_tooltip", JsonString(" Monsters will cast all buff spells just before combat starts! VERY DIFFICULTY!")); NuiSetBind(oPC, nToken, "chbx_buff_summons_check", JsonBool(GetLocalInt(oModule, AI_RULE_PRESUMMON))); NuiSetBindWatch(oPC, nToken, "chbx_buff_summons_check", TRUE); NuiSetBind(oPC, nToken, "chbx_buff_summons_event", JsonBool(TRUE)); @@ -597,6 +602,7 @@ void ai_CreateAIMainNUI(object oPC) NuiSetBind(oPC, nToken, "txt_inc_enc_event", JsonBool(TRUE)); NuiSetBind(oPC, nToken, "txt_inc_hp", JsonString(IntToString(GetLocalInt(oModule, AI_INCREASE_MONSTERS_HP)))); NuiSetBindWatch(oPC, nToken, "txt_inc_hp", TRUE); + NuiSetBind(oPC, nToken, "txt_inc_hp_tooltip", JsonString(" Will increase ALL monsters hitpoints by the%. Upto 500% or 6 times the normal health!")); NuiSetBind(oPC, nToken, "txt_inc_hp_event", JsonBool(TRUE)); } if(nMonsterAI || nAssociateAI) @@ -649,13 +655,14 @@ void ai_CreateAssociateCommandNUI(object oPC, object oAssociate) { if(bIsPC) { - if(bUsingPCAI || !AI_SERVER) + bLeft = ai_GetIsServer(); + if(bUsingPCAI || !bLeft) { if(bUsingPCAI) { jRow = CreateButton(jRow, "AI Menu", "btn_ai_menu", 232.0, 20.0, -1.0, "btn_ai_menu_tooltip"); } - if(!AI_SERVER) + if(!bLeft) { jRow = CreateButton(jRow, "Main Menu", "btn_main_menu", 232.0, 20.0, -1.0, "btn_main_menu_tooltip"); } @@ -681,6 +688,29 @@ void ai_CreateAssociateCommandNUI(object oPC, object oAssociate) jRow = CreateButtonSelect(jRow, "Vertical Widget", "btn_vertical_widget", 154.0, 20.0, "btn_vertical_widget_tooltip"); jCol = JsonArrayInsert(jCol, NuiRow(jRow)); // Row 3 ******************************************************************* 500 / 129 + bRight = !ai_GetDMWAccessButton(BTN_ASSOC_WIDGETS_OFF); + //bLeft = !ai_GetDMWAccessButton(BTN_CMD_GUARD); + if(bRight)// || bLeft) + { + jRow = JsonArray(); + if(bRight) + { + if(bIsPC && bUsingHenchAI) + { + jRow = CreateButton(jRow, "Associate Widgets", "btn_toggle_assoc_widget", 200.0f, 20.0f, -1.0, "btn_toggle_assoc_widget_tooltip"); + jRow = CreateCheckBox(jRow, "", "chbx_toggle_assoc_widget", 25.0, 20.0); + jCol = JsonArrayInsert(jCol, NuiRow(jRow)); + fHeight += 28.0; + } + } + jRow = JsonArrayInsert(jRow, NuiSpacer()); + //if(bLeft) + //{ + //} + //jCol = JsonArrayInsert(jCol, NuiRow(jRow)); + //fHeight += 28.0; + } + // Row 4 ******************************************************************* 500 / 129 bRight = !ai_GetDMWAccessButton(BTN_CMD_ACTION); bLeft = !ai_GetDMWAccessButton(BTN_CMD_GUARD); if(bRight || bLeft) @@ -700,7 +730,7 @@ void ai_CreateAssociateCommandNUI(object oPC, object oAssociate) jCol = JsonArrayInsert(jCol, NuiRow(jRow)); fHeight += 28.0; } - // Row 4 ******************************************************************* 500 / 157 + // Row 5 ******************************************************************* 500 / 157 jRow = JsonArray(); bRight = !ai_GetDMWAccessButton(BTN_CMD_HOLD); bLeft = !ai_GetDMWAccessButton(BTN_CMD_ATTACK); @@ -721,7 +751,7 @@ void ai_CreateAssociateCommandNUI(object oPC, object oAssociate) jCol = JsonArrayInsert(jCol, NuiRow(jRow)); fHeight += 28.0; } - // Row 5 ******************************************************************* 500 / 213 + // Row 6 ******************************************************************* 500 / 213 bRight = !ai_GetDMWAccessButton(BTN_CMD_FOLLOW); bLeft = !ai_GetDMAIAccessButton(BTN_AI_FOLLOW_TARGET); if(bRight || bLeft) @@ -741,7 +771,7 @@ void ai_CreateAssociateCommandNUI(object oPC, object oAssociate) jCol = JsonArrayInsert(jCol, NuiRow(jRow)); fHeight += 28.0; } - // Row 6 ******************************************************************* 500 / 185 + // Row 7 ******************************************************************* 500 / 185 if(bIsPC) { bRight = !ai_GetDMWAccessButton(BTN_CMD_SEARCH); @@ -764,7 +794,7 @@ void ai_CreateAssociateCommandNUI(object oPC, object oAssociate) fHeight = fHeight + 28.0; } } - // Row 7 ******************************************************************* 500 / 241 + // Row 8 ******************************************************************* 500 / 241 bRight = !ai_GetDMWAccessButton(BTN_CMD_AI_SCRIPT); bLeft = !ai_GetDMWAccessButton(BTN_CMD_PLACE_TRAP); if(bRight || bLeft) @@ -785,7 +815,7 @@ void ai_CreateAssociateCommandNUI(object oPC, object oAssociate) jCol = JsonArrayInsert(jCol, NuiRow(jRow)); fHeight = fHeight + 28.0; } - // Row 8 ******************************************************************* 500 / --- + // Row 9 ******************************************************************* 500 / --- int bMemorize = ai_GetIsSpellCaster(oAssociate); int bSpellbook = ai_GetIsSpellBookRestrictedCaster(oAssociate); bRight = !ai_GetDMWAccessButton(BTN_CMD_SPELL_WIDGET); @@ -821,7 +851,7 @@ void ai_CreateAssociateCommandNUI(object oPC, object oAssociate) jCol = JsonArrayInsert(jCol, NuiRow(jRow)); fHeight = fHeight + 28.0; } - // Row 9 ******************************************************************* 500 / 269 + // Row 10 ******************************************************************* 500 / 269 bRight = !ai_GetDMWAccessButton(BTN_BUFF_SHORT); bLeft = !ai_GetDMWAccessButton(BTN_BUFF_LONG); if(bRight || bLeft) @@ -842,7 +872,7 @@ void ai_CreateAssociateCommandNUI(object oPC, object oAssociate) jCol = JsonArrayInsert(jCol, NuiRow(jRow)); fHeight = fHeight + 28.0; } - // Row 10 ******************************************************************* 500 / 297 + // Row 11 ******************************************************************* 500 / 297 bRight = !ai_GetDMWAccessButton(BTN_BUFF_ALL); bLeft = !ai_GetDMWAccessButton(BTN_BUFF_REST); if(bRight || bLeft) @@ -863,7 +893,7 @@ void ai_CreateAssociateCommandNUI(object oPC, object oAssociate) jCol = JsonArrayInsert(jCol, NuiRow(jRow)); fHeight = fHeight + 28.0; } - // Row 11 ******************************************************************* 500 / 325 + // Row 12 ******************************************************************* 500 / 325 bRight = !ai_GetDMWAccessButton(BTN_CMD_JUMP_TO); bLeft = !ai_GetDMWAccessButton(BTN_CMD_GHOST_MODE); if(bRight || bLeft) @@ -884,7 +914,7 @@ void ai_CreateAssociateCommandNUI(object oPC, object oAssociate) jCol = JsonArrayInsert(jCol, NuiRow(jRow)); fHeight = fHeight + 28.0; } - // Row 12 ****************************************************************** 500 / 353 + // Row 13 ****************************************************************** 500 / 353 bRight = !ai_GetDMWAccessButton(BTN_CMD_CAMERA); bLeft = !ai_GetDMWAccessButton(BTN_CMD_INVENTORY); if(bRight || bLeft) @@ -905,7 +935,7 @@ void ai_CreateAssociateCommandNUI(object oPC, object oAssociate) jCol = JsonArrayInsert(jCol, NuiRow(jRow)); fHeight = fHeight + 28.0; } - // Row 13 ******************************************************************* 500 / --- + // Row 14 ******************************************************************* 500 / --- int bFamiliar = GetHasFeat(FEAT_SUMMON_FAMILIAR, oAssociate, TRUE); if(!ai_GetDMWAccessButton(BTN_CMD_FAMILIAR) && bFamiliar) { @@ -916,7 +946,7 @@ void ai_CreateAssociateCommandNUI(object oPC, object oAssociate) // Add row to the column. jCol = JsonArrayInsert(jCol, NuiRow(jRow)); fHeight = fHeight + 28.0; - // Row 14 ******************************************************************* 500 / --- + // Row 15 ******************************************************************* 500 / --- jRow = JsonArray(); jRow = CreateCombo(jRow, ai_CreateCompanionJson(oPC, "hen_familiar"), "cmb_familiar", 200.0, 20.0); jRow = CreateCheckBox(jRow, "", "chbx_familiar", 25.0, 20.0); @@ -926,7 +956,7 @@ void ai_CreateAssociateCommandNUI(object oPC, object oAssociate) jCol = JsonArrayInsert(jCol, NuiRow(jRow)); fHeight = fHeight + 28.0; } - // Row 15 ******************************************************************* 500 / --- + // Row 16 ******************************************************************* 500 / --- int bCompanion = GetHasFeat(FEAT_ANIMAL_COMPANION, oAssociate, TRUE); if(!ai_GetDMWAccessButton(BTN_CMD_COMPANION) && bCompanion) { @@ -937,7 +967,7 @@ void ai_CreateAssociateCommandNUI(object oPC, object oAssociate) // Add row to the column. jCol = JsonArrayInsert(jCol, NuiRow(jRow)); fHeight = fHeight + 28.0; - // Row 16 ******************************************************************* 500 / --- + // Row 17 ******************************************************************* 500 / --- jRow = JsonArray(); jRow = CreateCombo(jRow, ai_CreateCompanionJson(oPC, "hen_companion"), "cmb_companion", 200.0, 20.0); jRow = CreateCheckBox(jRow, "", "chbx_companion", 25.0, 20.0); @@ -947,7 +977,7 @@ void ai_CreateAssociateCommandNUI(object oPC, object oAssociate) jCol = JsonArrayInsert(jCol, NuiRow(jRow)); fHeight = fHeight + 28.0; } - // Row 17+ ****************************************************************** 500 / --- + // Row 18+ ****************************************************************** 500 / --- string sAssociateType = ai_GetAssociateType(oPC, oAssociate); json jPCPlugins; if(bIsPC) @@ -986,7 +1016,7 @@ void ai_CreateAssociateCommandNUI(object oPC, object oAssociate) jPlugin = JsonArrayGet(jPCPlugins, ++nIndex); } } - // Row 18 ****************************************************************** 500 / --- + // Row 19+ ****************************************************************** 500 / --- jRow = JsonArray(); jRow = JsonArrayInsert(jRow, NuiSpacer()); jRow = CreateLabel(jRow, "", "lbl_info_1", 475.0, 20.0, NUI_HALIGN_CENTER); @@ -1005,7 +1035,7 @@ void ai_CreateAssociateCommandNUI(object oPC, object oAssociate) } // Set the Layout of the window. json jLayout = NuiCol(jCol); - string sName = GetName(oAssociate); + string sName = ai_StripColorCodes(GetName(oAssociate)); if(GetStringRight(sName, 1) == "s") sName = sName + "'"; else sName = sName + "'s"; int nToken = SetWindow(oPC, jLayout, sAssociateType + AI_COMMAND_NUI, sName + " Command Menu", @@ -1033,6 +1063,7 @@ void ai_CreateAssociateCommandNUI(object oPC, object oAssociate) int bInventory = ai_GetWidgetButton(oPC, BTN_CMD_INVENTORY, oAssociate, sAssociateType); int bBtnFamiliar = ai_GetWidgetButton(oPC, BTN_CMD_FAMILIAR, oAssociate, sAssociateType); int bBtnCompanion = ai_GetWidgetButton(oPC, BTN_CMD_COMPANION, oAssociate, sAssociateType); + int bAssocWidgetOff = ai_GetWidgetButton(oPC, BTN_ASSOC_WIDGETS_OFF, oAssociate, sAssociateType); int bVertical = ai_GetWidgetButton(oPC, BTN_WIDGET_VERTICAL, oAssociate, sAssociateType); // Save the associate to the nui for use in 0e_nui json jData = JsonArray(); @@ -1056,7 +1087,7 @@ void ai_CreateAssociateCommandNUI(object oPC, object oAssociate) NuiSetBind(oPC, nToken, "btn_copy_settings_event", JsonBool (TRUE)); sText = " Copy AI and command settings for one creature to others."; NuiSetBind(oPC, nToken, "btn_copy_settings_tooltip", JsonString(sText)); - if(!AI_SERVER) + if(!ai_GetIsServer()) { NuiSetBind(oPC, nToken, "btn_main_menu_event", JsonBool(TRUE)); NuiSetBind(oPC, nToken, "btn_main_menu_tooltip", JsonString(" Module Options")); @@ -1102,6 +1133,17 @@ void ai_CreateAssociateCommandNUI(object oPC, object oAssociate) NuiSetBind(oPC, nToken, "btn_vertical_widget_tooltip", JsonString( " " + sName + " widget will display vertically")); // Row 3 + if(bIsPC && bUsingHenchAI) + { + NuiSetBind(oPC, nToken, "btn_toggle_assoc_widget_event", JsonBool(TRUE)); + if(ai_GetWidgetButton(oPC, BTN_WIDGET_OFF, oPC, "pc")) sText = " Associate Widgets [Off]"; + else sText = " Associate Widgets [On]"; + NuiSetBind(oPC, nToken, "btn_toggle_assoc_widget_tooltip", JsonString(sText)); + NuiSetBind(oPC, nToken, "chbx_toggle_assoc_widget_check", JsonBool (bAssocWidgetOff)); + NuiSetBindWatch (oPC, nToken, "chbx_toggle_assoc_widget_check", TRUE); + NuiSetBind(oPC, nToken, "chbx_toggle_assoc_widget_event", JsonBool(TRUE)); + } + // Row 4 NuiSetBind(oPC, nToken, "chbx_cmd_action_check", JsonBool (bCmdAction)); NuiSetBindWatch(oPC, nToken, "chbx_cmd_action_check", TRUE); NuiSetBind(oPC, nToken, "chbx_cmd_action_event", JsonBool(TRUE)); @@ -1110,7 +1152,7 @@ void ai_CreateAssociateCommandNUI(object oPC, object oAssociate) NuiSetBindWatch (oPC, nToken, "chbx_cmd_guard_check", TRUE); NuiSetBind(oPC, nToken, "chbx_cmd_guard_event", JsonBool(TRUE)); NuiSetBind(oPC, nToken, "btn_cmd_guard_event", JsonBool (TRUE)); - // Row 4 + // Row 5 NuiSetBind(oPC, nToken, "chbx_cmd_hold_check", JsonBool (bCmdHold)); NuiSetBindWatch (oPC, nToken, "chbx_cmd_hold_check", TRUE); NuiSetBind(oPC, nToken, "chbx_cmd_hold_event", JsonBool(TRUE)); @@ -1119,7 +1161,7 @@ void ai_CreateAssociateCommandNUI(object oPC, object oAssociate) NuiSetBindWatch (oPC, nToken, "chbx_cmd_attack_check", TRUE); NuiSetBind(oPC, nToken, "chbx_cmd_attack_event", JsonBool(TRUE)); NuiSetBind(oPC, nToken, "btn_cmd_attack_event", JsonBool (TRUE)); - // Row 5 + // Row 6 NuiSetBind(oPC, nToken, "chbx_cmd_follow_check", JsonBool (bCmdFollow)); NuiSetBindWatch (oPC, nToken, "chbx_cmd_follow_check", TRUE); NuiSetBind(oPC, nToken, "chbx_cmd_follow_event", JsonBool(TRUE)); @@ -1128,7 +1170,7 @@ void ai_CreateAssociateCommandNUI(object oPC, object oAssociate) NuiSetBindWatch (oPC, nToken, "chbx_follow_target_check", TRUE); NuiSetBind(oPC, nToken, "chbx_follow_target_event", JsonBool(TRUE)); NuiSetBind(oPC, nToken, "btn_follow_target_event", JsonBool (TRUE)); - // Row 6 + // Row 7 if(bIsPC) { NuiSetBind(oPC, nToken, "chbx_cmd_search_check", JsonBool (bCmdSearch)); @@ -1181,7 +1223,7 @@ void ai_CreateAssociateCommandNUI(object oPC, object oAssociate) else sTarget = GetName(oPC); } NuiSetBind(oPC, nToken, "btn_follow_target_tooltip", JsonString(" " + GetName(oAssociate) + " following " + sTarget + " [" + sRange + " meters]")); - // Row 7 + // Row 8 NuiSetBind(oPC, nToken, "chbx_cmd_ai_script_check", JsonBool (bCmdAIScript)); NuiSetBindWatch (oPC, nToken, "chbx_cmd_ai_script_check", TRUE); NuiSetBind(oPC, nToken, "chbx_cmd_ai_script_event", JsonBool(TRUE)); @@ -1214,7 +1256,7 @@ void ai_CreateAssociateCommandNUI(object oPC, object oAssociate) NuiSetBind(oPC, nToken, "btn_cmd_place_trap_tooltip", JsonString ( " Place a trap at the location selected")); } - // Row 8 + // Row 9 NuiSetBind(oPC, nToken, "btn_quick_widget_event", JsonBool(TRUE)); NuiSetBind (oPC, nToken, "btn_quick_widget_tooltip", JsonString( " Add/Remove abilities and spells from creatures widget")); @@ -1233,26 +1275,29 @@ void ai_CreateAssociateCommandNUI(object oPC, object oAssociate) NuiSetBind (oPC, nToken, "btn_spell_known_tooltip", JsonString( " Change known spell list.")); } - // Row 9 + // Row 10 NuiSetBind(oPC, nToken, "chbx_buff_short_check", JsonBool (bBuffShort)); NuiSetBindWatch (oPC, nToken, "chbx_buff_short_check", TRUE); NuiSetBind(oPC, nToken, "chbx_buff_short_event", JsonBool(TRUE)); NuiSetBind(oPC, nToken, "btn_buff_short_event", JsonBool (TRUE)); + float fDelay = GetLocalFloat(oAssociate, AI_DELAY_BUFF_CASTING); + if(fDelay < 0.1) fDelay = 0.1; + string sDelay = FloatToString(fDelay, 0, 1); NuiSetBind (oPC, nToken, "btn_buff_short_tooltip", JsonString ( - " Buff the party with short duration spells")); + " Buff the party with short duration spells. Cast speed [" + sDelay + "]")); NuiSetBind(oPC, nToken, "chbx_buff_long_check", JsonBool (bBuffLong)); NuiSetBindWatch (oPC, nToken, "chbx_buff_long_check", TRUE); NuiSetBind(oPC, nToken, "chbx_buff_long_event", JsonBool(TRUE)); NuiSetBind(oPC, nToken, "btn_buff_long_event", JsonBool (TRUE)); NuiSetBind(oPC, nToken, "btn_buff_long_tooltip", JsonString ( - " Buff the party with long duration spells")); - // Row 10 + " Buff the party with long duration spells. Cast speed [" + sDelay + "]")); + // Row 11 NuiSetBind(oPC, nToken, "chbx_buff_all_check", JsonBool (bBuffAll)); NuiSetBindWatch (oPC, nToken, "chbx_buff_all_check", TRUE); NuiSetBind(oPC, nToken, "chbx_buff_all_event", JsonBool(TRUE)); NuiSetBind(oPC, nToken, "btn_buff_all_event", JsonBool (TRUE)); NuiSetBind(oPC, nToken, "btn_buff_all_tooltip", JsonString ( - " Buff the party with all our defensive spells")); + " Buff the party with all spells. Cast speed [" + sDelay + "]")); if(!bIsPC && ResManGetAliasFor("prc_ai_fam_percp", RESTYPE_NCS) == "") { NuiSetBind(oPC, nToken, "chbx_buff_rest_check", JsonBool (bBuffRest)); @@ -1263,7 +1308,7 @@ void ai_CreateAssociateCommandNUI(object oPC, object oAssociate) else sText = " [Off] Turn buffing after resting on"; NuiSetBind (oPC, nToken, "btn_buff_rest_tooltip", JsonString (sText)); } - // Row 11 + // Row 12 NuiSetBind(oPC, nToken, "chbx_jump_to_check", JsonBool(bJumpTo)); NuiSetBindWatch (oPC, nToken, "chbx_jump_to_check", TRUE); NuiSetBind(oPC, nToken, "chbx_jump_to_event", JsonBool(TRUE)); @@ -1283,7 +1328,7 @@ void ai_CreateAssociateCommandNUI(object oPC, object oAssociate) if(ai_GetAIMode(oAssociate, AI_MODE_GHOST)) sText = "Off"; NuiSetBind(oPC, nToken, "btn_ghost_mode_tooltip", JsonString ( " Turn " + sText + " clipping through creatures for " + GetName(oAssociate))); - // Row 12 + // Row 13 NuiSetBind(oPC, nToken, "chbx_camera_check", JsonBool (bCamera)); NuiSetBindWatch (oPC, nToken, "chbx_camera_check", TRUE); NuiSetBind(oPC, nToken, "chbx_camera_event", JsonBool(TRUE)); @@ -1296,7 +1341,7 @@ void ai_CreateAssociateCommandNUI(object oPC, object oAssociate) NuiSetBind(oPC, nToken, "btn_inventory_event", JsonBool (TRUE)); NuiSetBind(oPC, nToken, "btn_inventory_tooltip", JsonString ( " Open " + sName + " inventory")); - // Row 13 & 14 + // Row 14 & 15 if(bFamiliar) { NuiSetBind(oPC, nToken, "chbx_familiar_check", JsonBool(bBtnFamiliar)); @@ -1322,7 +1367,7 @@ void ai_CreateAssociateCommandNUI(object oPC, object oAssociate) NuiSetBind(oPC, nToken, "lbl_familiar_name_label", JsonString("Familiar name")); } } - // Row 15 & 16 + // Row 16 & 17 if(bCompanion) { NuiSetBind(oPC, nToken, "chbx_companion_check", JsonBool(bBtnCompanion)); @@ -1350,7 +1395,7 @@ void ai_CreateAssociateCommandNUI(object oPC, object oAssociate) } if(bIsPC) { - // Row 17+ + // Row 18+ int nIndex, bWidget; string sButton, sText; json jPlugin = JsonArrayGet(jPCPlugins, nIndex); @@ -1371,7 +1416,7 @@ void ai_CreateAssociateCommandNUI(object oPC, object oAssociate) } NuiSetBind(oPC, nToken, "chbx_plugin_tooltip", JsonString(" Adds the plugin to your widget.")); } - // Row 18 + // Row 19+ sText = ai_GetRandomTip(); NuiSetBind(oPC, nToken, "lbl_info_1_label", JsonString(sText)); } @@ -1393,7 +1438,8 @@ void ai_CreateAssociateAINUI(object oPC, object oAssociate) if(bIsPC) { bRight = GetLocalInt(GetModule(), sDMWidgetAccessVarname) != 7340028; - if(!AI_SERVER || bRight) + bLeft = ai_GetIsServer(); + if(!bLeft || bRight) { // If all the Command buttons are blocked then don't load the menu. if(bRight) @@ -1402,10 +1448,10 @@ void ai_CreateAssociateAINUI(object oPC, object oAssociate) jRow = CreateLabel(jRow, "", "blank_label_2", 25.0, 20.0); } jRow = JsonArrayInsert(jRow, NuiSpacer()); - if(!AI_SERVER) + if(!bLeft) { - CreateButton(jRow, "Main Menu", "btn_main_menu", 200.0, 20.0, -1.0, "btn_main_menu_tooltip"); - CreateLabel(jRow, "", "blank_label_2", 25.0, 20.0); + jRow = CreateButton(jRow, "Main Menu", "btn_main_menu", 200.0, 20.0, -1.0, "btn_main_menu_tooltip"); + jRow = CreateLabel(jRow, "", "blank_label_2", 25.0, 20.0); } jCol = JsonArrayInsert(jCol, NuiRow(jRow)); fHeight += 28.0; @@ -1431,7 +1477,7 @@ void ai_CreateAssociateAINUI(object oPC, object oAssociate) fHeight += 28.0; } // Row 3 ******************************************************************* 500 / 101 - bRight = !ai_GetDMAIAccessButton(BTN_AI_FOR_PC); + bRight = TRUE;//!ai_GetDMAIAccessButton(BTN_AI_FOR_PC); bLeft = !ai_GetDMAIAccessButton(BTN_AI_REDUCE_SPEECH); if(bRight || bLeft) { @@ -1724,7 +1770,7 @@ void ai_CreateAssociateAINUI(object oPC, object oAssociate) } // Set the Layout of the window. json jLayout = NuiCol(jCol); - string sText, sName = GetName(oAssociate); + string sText, sName = ai_StripColorCodes(GetName(oAssociate)); if(GetStringRight(sName, 1) == "s") sName = sName + "'"; else sName = sName + "'s"; int nToken = SetWindow(oPC, jLayout, sAssociateType + AI_NUI, sName + " AI Menu", @@ -1767,7 +1813,7 @@ void ai_CreateAssociateAINUI(object oPC, object oAssociate) if(bIsPC) { bRight = GetLocalInt(GetModule(), sDMWidgetAccessVarname) != 7340028; - if(!AI_SERVER || bRight) + if(!ai_GetIsServer() || bRight) { // If all the Command buttons are blocked then don't load the menu. if(bRight) @@ -1775,7 +1821,7 @@ void ai_CreateAssociateAINUI(object oPC, object oAssociate) NuiSetBind(oPC, nToken, "btn_command_menu_event", JsonBool(TRUE)); NuiSetBind(oPC, nToken, "btn_command_menu_tooltip", JsonString(" " + sName + " Command options")); } - if(!AI_SERVER) + if(!ai_GetIsServer()) { NuiSetBind(oPC, nToken, "btn_main_menu_event", JsonBool(TRUE)); NuiSetBind(oPC, nToken, "btn_main_menu_tooltip", JsonString(" Module Options")); @@ -1793,7 +1839,7 @@ void ai_CreateAssociateAINUI(object oPC, object oAssociate) NuiSetBind(oPC, nToken, "btn_loot_filter", JsonInt(TRUE)); // Row 3 // Only activate ai on/off if this is for the pc. - if(bIsPC && ResManGetAliasFor("prc_ai_fam_percp", RESTYPE_NCS) == "") + if(bIsPC && TRUE)//ResManGetAliasFor("prc_ai_fam_percp", RESTYPE_NCS) == "") { NuiSetBind(oPC, nToken, "chbx_ai_check", JsonBool(bAI)); NuiSetBindWatch (oPC, nToken, "chbx_ai_check", TRUE); @@ -2025,11 +2071,30 @@ void ai_SetWidgetBinds(object oPC, object oAssociate, string sAssociateType, int // Set event watches for save window location. NuiSetBindWatch(oPC, nToken, "window_geometry", TRUE); // Set the buttons to show events. - NuiSetBind(oPC, nToken, "btn_open_main_image", JsonString(GetPortraitResRef(oAssociate) + "s")); + string sPortrait = GetPortraitResRef(oAssociate); + string sSize; + if(ResManGetAliasFor(sPortrait + "s", RESTYPE_TGA) != "") sSize = "s"; + else if(ResManGetAliasFor(sPortrait + "m", RESTYPE_TGA) != "") sSize = "m"; + else if(ResManGetAliasFor(sPortrait + "l", RESTYPE_TGA)!= "") sSize = "l"; + else if(ResManGetAliasFor(sPortrait + "h", RESTYPE_TGA)!= "") sSize = "h"; + else sSize = "m"; + NuiSetBind(oPC, nToken, "btn_open_main_image", JsonString(sPortrait + sSize)); NuiSetBind(oPC, nToken, "btn_open_main_event", JsonBool(TRUE)); NuiSetBind(oPC, nToken, "btn_open_main_tooltip", JsonString(" " + sName + " widget menu")); + if(ai_GetWidgetButton(oPC, BTN_ASSOC_WIDGETS_OFF, oAssociate, sAssociateType)) + { + NuiSetBind(oPC, nToken, "btn_toggle_assoc_widget_event", JsonBool(TRUE)); + if(ai_GetWidgetButton(oPC, BTN_WIDGET_OFF, oPC, "pc")) sText = " Associate Widgets [Off]"; + else sText = " Associate Widgets [On]"; + NuiSetBind(oPC, nToken, "btn_toggle_assoc_widget_tooltip", JsonString(sText)); + } if(bIsPC) sText = " All associates"; else sText = " " + GetName(oAssociate); + if(ai_GetWidgetButton(oPC, BTN_CMD_CAMERA, oAssociate, sAssociateType)) + { + NuiSetBind(oPC, nToken, "btn_camera_event", JsonBool(TRUE)); + NuiSetBind(oPC, nToken, "btn_camera_tooltip", JsonString(" Toggle camera view for " + sName)); + } if(ai_GetWidgetButton(oPC, BTN_CMD_ACTION, oAssociate, sAssociateType)) { NuiSetBind(oPC, nToken, "btn_cmd_action_event", JsonBool(TRUE)); @@ -2168,17 +2233,29 @@ void ai_SetWidgetBinds(object oPC, object oAssociate, string sAssociateType, int if(ai_GetWidgetButton(oPC, BTN_BUFF_SHORT, oAssociate, sAssociateType)) { NuiSetBind(oPC, nToken, "btn_buff_short_event", JsonBool(TRUE)); - NuiSetBind(oPC, nToken, "btn_buff_short_tooltip", JsonString(" Buff the party with short duration spells")); + float fDelay = GetLocalFloat(oAssociate, AI_DELAY_BUFF_CASTING); + if(fDelay < 0.1) fDelay = 0.1; + string sDelay = FloatToString(fDelay, 0, 1); + NuiSetBind (oPC, nToken, "btn_buff_short_tooltip", JsonString( + " Buff the party with short duration spells. Cast speed [" + sDelay + "]")); } if(ai_GetWidgetButton(oPC, BTN_BUFF_LONG, oAssociate, sAssociateType)) { NuiSetBind(oPC, nToken, "btn_buff_long_event", JsonBool(TRUE)); - NuiSetBind(oPC, nToken, "btn_buff_long_tooltip", JsonString(" Buff the party with long duration spells")); + float fDelay = GetLocalFloat(oAssociate, AI_DELAY_BUFF_CASTING); + if(fDelay < 0.1) fDelay = 0.1; + string sDelay = FloatToString(fDelay, 0, 1); + NuiSetBind (oPC, nToken, "btn_buff_long_tooltip", JsonString( + " Buff the party with long duration spells. Cast speed [" + sDelay + "]")); } if(ai_GetWidgetButton(oPC, BTN_BUFF_ALL, oAssociate, sAssociateType)) { NuiSetBind(oPC, nToken, "btn_buff_all_event", JsonBool(TRUE)); - NuiSetBind(oPC, nToken, "btn_buff_all_tooltip", JsonString(" Buff the party with all our defensive spells")); + float fDelay = GetLocalFloat(oAssociate, AI_DELAY_BUFF_CASTING); + if(fDelay < 0.1) fDelay = 0.1; + string sDelay = FloatToString(fDelay, 0, 1); + NuiSetBind (oPC, nToken, "btn_buff_all_tooltip", JsonString( + " Buff the party with all spells. Cast speed [" + sDelay + "]")); } if(ai_GetWidgetButton(oPC, BTN_CMD_JUMP_TO, oAssociate, sAssociateType)) { @@ -2196,11 +2273,6 @@ void ai_SetWidgetBinds(object oPC, object oAssociate, string sAssociateType, int NuiSetBind(oPC, nToken, "btn_ghost_mode_tooltip", JsonString ( " Turn " + sText + " clipping through creatures for " + GetName(oAssociate))); } - if(ai_GetWidgetButton(oPC, BTN_CMD_CAMERA, oAssociate, sAssociateType)) - { - NuiSetBind(oPC, nToken, "btn_camera_event", JsonBool(TRUE)); - NuiSetBind(oPC, nToken, "btn_camera_tooltip", JsonString(" Toggle camera view for " + sName)); - } if(ai_GetWidgetButton(oPC, BTN_CMD_INVENTORY, oAssociate, sAssociateType)) { NuiSetBind(oPC, nToken, "btn_inventory_event", JsonBool(TRUE)); @@ -2446,7 +2518,7 @@ void ai_SetWidgetBinds(object oPC, object oAssociate, string sAssociateType, int object oItem; if(JsonGetType(jWidget) != JSON_TYPE_NULL) { - int nLevel, nSpell, nIndex, nClass, nMetaMagic, nDomain, nSubSpell, nFeat, nSAIndex; + int nLevel, nSpell, nIndex, nClass, nMetaMagic, nDomain, nSubSpell, nFeat, nSAIndex, nUses; string sSpellIcon, sMetaMagicText, sSubSpell, sClass, sIndex; while(nIndex < 10) { @@ -2491,9 +2563,10 @@ void ai_SetWidgetBinds(object oPC, object oAssociate, string sAssociateType, int if(nUses) { NuiSetBind(oPC, nToken, "btn_widget_" + sIndex + "_event", JsonBool(TRUE)); - if(nUses == 999) sText = "Unlimited"; + if(nUses == 999) sText = ""; else sText = IntToString(nUses); - NuiSetBind(oPC, nToken, "btn_widget_" + sIndex + "_tooltip", JsonString(" " + sName + " (" + sBaseName + " / " + sText + ")")); + NuiSetBind(oPC, nToken, "uses_" + sIndex + "_text", JsonString(sText)); + NuiSetBind(oPC, nToken, "btn_widget_" + sIndex + "_tooltip", JsonString(" " + sName + " (" + sBaseName + ")")); } else NuiSetBind(oPC, nToken, "btn_widget_" + sIndex + "_event", JsonBool(FALSE)); } @@ -2516,8 +2589,10 @@ void ai_SetWidgetBinds(object oPC, object oAssociate, string sAssociateType, int } NuiSetBind(oPC, nToken, "btn_widget_" + sIndex + "_event", JsonBool(TRUE)); NuiSetBind(oPC, nToken, "btn_widget_" + sIndex + "_image", JsonString(sSpellIcon)); - if(GetHasFeat(nFeat, oAssociate)) + nUses = GetHasFeat(nFeat, oAssociate); + if(nUses > 0) { + NuiSetBind(oPC, nToken, "uses_" + sIndex + "_text", JsonString(IntToString(nUses))); NuiSetBind(oPC, nToken, "btn_widget_" + sIndex + "_tooltip", JsonString(" " + sName)); } else NuiSetBind(oPC, nToken, "btn_widget_" + sIndex + "_event", JsonBool(FALSE)); @@ -2535,18 +2610,27 @@ void ai_SetWidgetBinds(object oPC, object oAssociate, string sAssociateType, int sMetaMagicText = ai_GetSpellIconAttributes(oAssociate, nMetaMagic, nDomain); NuiSetBind(oPC, nToken, "metamagic_" + sIndex + "_text", JsonString(sMetaMagicText)); nSAIndex = JsonGetInt(JsonArrayGet(jSpell, 6)); - if(nClass == 255 && GetSpellAbilityReady(oAssociate, nSAIndex)) + if(nClass == 255) { - sName = GetStringByStrRef(StringToInt(Get2DAString("spells", "Name", nSpell))); - NuiSetBind(oPC, nToken, "btn_widget_" + sIndex + "_tooltip", JsonString(" " + sName + " (Special Ability / " + IntToString(nLevel) + ")")); + if(GetSpellAbilityReady(oAssociate, nSAIndex)) + { + sName = GetStringByStrRef(StringToInt(Get2DAString("spells", "Name", nSpell))); + NuiSetBind(oPC, nToken, "btn_widget_" + sIndex + "_tooltip", JsonString(" " + sName + " (Special Ability / " + IntToString(nLevel) + ")")); + } + else NuiSetBind(oPC, nToken, "btn_widget_" + sIndex + "_event", JsonBool(FALSE)); } - else if(GetSpellUsesLeft(oAssociate, nClass, nSpell, nMetaMagic, nDomain)) + else { - sName = GetStringByStrRef(StringToInt(Get2DAString("spells", "Name", nSpell))); - sClass = GetStringByStrRef(StringToInt(Get2DAString("classes", "Name", nClass))); - NuiSetBind(oPC, nToken, "btn_widget_" + sIndex + "_tooltip", JsonString(" " + sName + " (" + sClass + " / " + IntToString(nLevel) + ")")); + nUses = GetSpellUsesLeft(oAssociate, nClass, nSpell, nMetaMagic, nDomain); + if(nUses > 0) + { + NuiSetBind(oPC, nToken, "uses_" + sIndex + "_text", JsonString(IntToString(nUses))); + sName = GetStringByStrRef(StringToInt(Get2DAString("spells", "Name", nSpell))); + sClass = GetStringByStrRef(StringToInt(Get2DAString("classes", "Name", nClass))); + NuiSetBind(oPC, nToken, "btn_widget_" + sIndex + "_tooltip", JsonString(" " + sName + " (" + sClass + " / " + IntToString(nLevel) + ")")); + } + else NuiSetBind(oPC, nToken, "btn_widget_" + sIndex + "_event", JsonBool(FALSE)); } - else NuiSetBind(oPC, nToken, "btn_widget_" + sIndex + "_event", JsonBool(FALSE)); } } } @@ -2599,9 +2683,10 @@ void ai_SetWidgetBinds(object oPC, object oAssociate, string sAssociateType, int if(nUses) { NuiSetBind(oPC, nToken, "btn_widget_" + sIndex + "_event", JsonBool(TRUE)); - if(nUses == 999) sText = "Unlimited"; + if(nUses == 999) sText = ""; else sText = IntToString(nUses); - NuiSetBind(oPC, nToken, "btn_widget_" + sIndex + "_tooltip", JsonString(" " + sName + " (" + sBaseName + " / " + sText + ")")); + NuiSetBind(oPC, nToken, "uses_" + sIndex + "_text", JsonString(sText)); + NuiSetBind(oPC, nToken, "btn_widget_" + sIndex + "_tooltip", JsonString(" " + sName + " (" + sBaseName + ")")); } else NuiSetBind(oPC, nToken, "btn_widget_" + sIndex + "_event", JsonBool(FALSE)); } @@ -2623,8 +2708,10 @@ void ai_SetWidgetBinds(object oPC, object oAssociate, string sAssociateType, int } NuiSetBind(oPC, nToken, "btn_widget_" + sIndex + "_event", JsonBool(TRUE)); NuiSetBind(oPC, nToken, "btn_widget_" + sIndex + "_image", JsonString(sSpellIcon)); - if(GetHasFeat(nFeat, oAssociate)) + nUses = GetHasFeat(nFeat, oAssociate); + if(nUses > 0) { + NuiSetBind(oPC, nToken, "uses_" + sIndex + "_text", JsonString(IntToString(nUses))); NuiSetBind(oPC, nToken, "btn_widget_" + sIndex + "_tooltip", JsonString(" " + sName)); } else NuiSetBind(oPC, nToken, "btn_widget_" + sIndex + "_event", JsonBool(FALSE)); @@ -2653,14 +2740,20 @@ void ai_SetWidgetBinds(object oPC, object oAssociate, string sAssociateType, int sName = GetStringByStrRef(StringToInt(Get2DAString("spells", "Name", nSpell))); NuiSetBind(oPC, nToken, "btn_widget_" + sIndex + "_tooltip", JsonString(" " + sName + " (Special Ability / " + IntToString(nLevel) + ")")); } + else NuiSetBind(oPC, nToken, "btn_widget_" + sIndex + "_event", JsonBool(FALSE)); } - else if(GetSpellUsesLeft(oAssociate, nClass, nSpell, nMetaMagic, nDomain)) + else { - sName = GetStringByStrRef(StringToInt(Get2DAString("spells", "Name", nSpell))); - sClass = GetStringByStrRef(StringToInt(Get2DAString("classes", "Name", nClass))); - NuiSetBind(oPC, nToken, "btn_widget_" + sIndex + "_tooltip", JsonString(" " + sName + " (" + sClass + " / " + IntToString(nLevel) + ")")); + nUses = GetSpellUsesLeft(oAssociate, nClass, nSpell, nMetaMagic, nDomain); + if(nUses > 0) + { + NuiSetBind(oPC, nToken, "uses_" + sIndex + "_text", JsonString(IntToString(nUses))); + sName = GetStringByStrRef(StringToInt(Get2DAString("spells", "Name", nSpell))); + sClass = GetStringByStrRef(StringToInt(Get2DAString("classes", "Name", nClass))); + NuiSetBind(oPC, nToken, "btn_widget_" + sIndex + "_tooltip", JsonString(" " + sName + " (" + sClass + " / " + IntToString(nLevel) + ")")); + } + else NuiSetBind(oPC, nToken, "btn_widget_" + sIndex + "_event", JsonBool(FALSE)); } - else NuiSetBind(oPC, nToken, "btn_widget_" + sIndex + "_event", JsonBool(FALSE)); } } else break; @@ -2687,8 +2780,30 @@ void ai_CreateWidgetNUI(object oPC, object oAssociate) jButton = NuiHeight(jButton, 35.0); jButton = NuiMargin(jButton, 0.0); jButton = NuiTooltip(jButton, NuiBind ("btn_open_main_tooltip")); - jButton = NuiImageRegion(jButton, NuiRect(0.0, 0.0, 32.0, 35.0)); + string sPortrait = GetPortraitResRef(oAssociate); + if(ResManGetAliasFor(sPortrait + "s", RESTYPE_TGA) != "") + jButton = NuiImageRegion(jButton, NuiRect(0.0, 0.0, 32.0, 50.0)); + else if(ResManGetAliasFor(sPortrait + "m", RESTYPE_TGA) != "") + jButton = NuiImageRegion(jButton, NuiRect(0.0, 0.0, 64.0, 100.0)); + else if(ResManGetAliasFor(sPortrait + "l", RESTYPE_TGA)!= "") + jButton = NuiImageRegion(jButton, NuiRect(0.0, 0.0, 128.0, 200.0)); + else if(ResManGetAliasFor(sPortrait + "h", RESTYPE_TGA)!= "") + jButton = NuiImageRegion(jButton, NuiRect(0.0, 0.0, 256.0, 400.0)); + else jButton = NuiImageRegion(jButton, NuiRect(0.0, 0.0, 64.0, 100.0)); + jButton = NuiAspect(jButton, 1.0); + //jButton = NuiImageRegion(jButton, NuiRect(0.0, 0.0, 32.0, 35.0)); + //jButton = NuiImage(jButton, JsonInt(NUI_ASPECT_FIT100), JsonInt(NUI_HALIGN_CENTER), JsonInt(NUI_VALIGN_TOP)); json jRow = JsonArrayInsert(JsonArray(), jButton); + if(ai_GetWidgetButton(oPC, BTN_ASSOC_WIDGETS_OFF, oAssociate, sAssociateType)) + { + jRow = CreateButtonImage(jRow, "ir_invite", "btn_toggle_assoc_widget", 35.0f, 35.0f, 0.0, "btn_toggle_assoc_widget_tooltip"); + fButtons += 1.0; + } + if(ai_GetWidgetButton(oPC, BTN_CMD_CAMERA, oAssociate, sAssociateType)) + { + jRow = CreateButtonImage(jRow, "ir_examine", "btn_camera", 35.0f, 35.0f, 0.0, "btn_camera_tooltip"); + fButtons += 1.0; + } if(ai_GetWidgetButton(oPC, BTN_CMD_ACTION, oAssociate, sAssociateType)) { jRow = CreateButtonImage(jRow, "ir_action", "btn_cmd_action", 35.0f, 35.0f, 0.0, "btn_cmd_action_tooltip"); @@ -2772,11 +2887,6 @@ void ai_CreateWidgetNUI(object oPC, object oAssociate) jRow = CreateButtonImage(jRow, "dm_limbo", "btn_ghost_mode", 35.0f, 35.0f, 0.0, "btn_ghost_mode_tooltip"); fButtons += 1.0; } - if(ai_GetWidgetButton(oPC, BTN_CMD_CAMERA, oAssociate, sAssociateType)) - { - jRow = CreateButtonImage(jRow, "ir_examine", "btn_camera", 35.0f, 35.0f, 0.0, "btn_camera_tooltip"); - fButtons += 1.0; - } if(ai_GetWidgetButton(oPC, BTN_CMD_INVENTORY, oAssociate, sAssociateType)) { jRow = CreateButtonImage(jRow, "ir_pickup", "btn_inventory", 35.0f, 35.0f, 0.0, "btn_inventory_tooltip"); @@ -2973,7 +3083,7 @@ void ai_CreateWidgetNUI(object oPC, object oAssociate) fQuickWidgetColumns += 1.0; int bAdd; float fSpellButtons; - json jButton, jRectangle, jMetaMagic, jDrawList; + json jButton, jRectangle, jMetaMagic, jDrawList, jUses; // Add row to the column. if(bVertical) jCol = JsonArrayInsert(jCol, NuiCol(jRow)); else jCol = JsonArrayInsert(jCol, NuiRow(jRow)); @@ -3006,10 +3116,16 @@ void ai_CreateWidgetNUI(object oPC, object oAssociate) jButton = NuiWidth(NuiHeight(jButton, 35.0), 35.0); jButton = NuiMargin(jButton, 0.0); jButton = NuiTooltip(jButton, NuiBind("btn_widget_" + sIndex + "_tooltip")); - jRectangle = NuiRect(4.0, 4.0, 10.0, 10.0); + // Metamagic text. + jRectangle = NuiRect(4.0, 24.0, 10.0, 31.0); jMetaMagic = NuiDrawListText(JsonBool(TRUE), NuiColor(255, 255, 0), jRectangle, NuiBind("metamagic_" + sIndex + "_text")); jDrawList = JsonArrayInsert(JsonArray(), jMetaMagic); jButton = NuiDrawList(jButton, JsonBool(TRUE), jDrawList); + // Spell uses text. + jRectangle = NuiRect(24.0, 2.0, 31.0, 8.0); + jUses = NuiDrawListText(JsonBool(TRUE), NuiColor(255, 255, 255), jRectangle, NuiBind("uses_" + sIndex + "_text")); + jDrawList = JsonArrayInsert(JsonArray(), jUses); + jButton = NuiDrawList(jButton, JsonBool(TRUE), jDrawList); jRow = JsonArrayInsert(jRow, jButton); fSpellButtons += 1.0; } @@ -3052,10 +3168,16 @@ void ai_CreateWidgetNUI(object oPC, object oAssociate) jButton = NuiWidth(NuiHeight(jButton, 35.0), 35.0); jButton = NuiMargin(jButton, 0.0); jButton = NuiTooltip(jButton, NuiBind("btn_widget_" + sIndex + "_tooltip")); - jRectangle = NuiRect(4.0, 4.0, 10.0, 10.0); + // Metamagic text. + jRectangle = NuiRect(4.0, 24.0, 10.0, 31.0); jMetaMagic = NuiDrawListText(JsonBool(TRUE), NuiColor(255, 255, 0), jRectangle, NuiBind("metamagic_" + sIndex + "_text")); jDrawList = JsonArrayInsert(JsonArray(), jMetaMagic); jButton = NuiDrawList(jButton, JsonBool(TRUE), jDrawList); + // Spell uses text. + jRectangle = NuiRect(24.0, 2.0, 31.0, 8.0); + jUses = NuiDrawListText(JsonBool(TRUE), NuiColor(255, 255, 255), jRectangle, NuiBind("uses_" + sIndex + "_text")); + jDrawList = JsonArrayInsert(JsonArray(), jUses); + jButton = NuiDrawList(jButton, JsonBool(TRUE), jDrawList); jRow = JsonArrayInsert(jRow, jButton); fSpellButtons += 1.0; } @@ -3149,7 +3271,7 @@ void ai_CreateWidgetNUI(object oPC, object oAssociate) json jLayout; int nToken, bBool; string sHeal, sText, sRange; - string sName = GetName(oAssociate); + string sName = ai_StripColorCodes(GetName(oAssociate)); if(GetStringRight(sName, 1) == "s") sName = sName + "'"; else sName = sName + "'s"; if(bVertical) @@ -3294,7 +3416,7 @@ void ai_CreateLootFilterNUI(object oPC, object oAssociate) } // Set the Layout of the window. json jLayout = NuiCol(jCol); - string sText, sName = GetName(oAssociate); + string sText, sName = ai_StripColorCodes(GetName(oAssociate)); if(GetStringRight(sName, 1) == "s") sName = sName + "'"; else sName = sName + "'s"; int nToken = SetWindow(oPC, jLayout, sAssociateType + AI_LOOTFILTER_NUI, sName + " Loot Filter", @@ -3372,7 +3494,7 @@ void ai_CreateCopySettingsNUI(object oPC, object oAssociate) DelayCommand (2.0, DeleteLocalInt (oPC, AI_NO_NUI_SAVE)); // ************************************************************************* Width / Height // Row 1 ******************************************************************* 244 / 73 - string sName = GetName(oAssociate); + string sName = ai_StripColorCodes(GetName(oAssociate)); if(GetStringRight(sName, 1) == "s") sName = sName + "'"; else sName = sName + "'s"; json jRow = JsonArrayInsert(JsonArray(), NuiSpacer()); @@ -3539,7 +3661,7 @@ void ai_CreatePluginNUI(object oPC) } // Set the Layout of the window. json jLayout = NuiCol(jCol); - sName = GetName(oPC); + sName = ai_StripColorCodes(GetName(oPC)); if(GetStringRight(sName, 1) == "s") sName = sName + "'"; else sName = sName + "'s"; int nToken = SetWindow(oPC, jLayout, AI_PLUGIN_NUI, sName + " PEPS Plugin Manager", @@ -3666,7 +3788,7 @@ json ai_CheckItemAbilities(json jQuickListArray, object oCreature, object oItem, if(nCharges) nUses = nCharges; else nUses = nPerDay; } - sSpellIcon = Get2DAString("spells", "iConResRef", nSpell); + sSpellIcon = Get2DAString("spells", "IconResRef", nSpell); } jSpell_Icon = JsonArrayInsert(jSpell_Icon, JsonString(sSpellIcon)); jSpell_Text = JsonArrayInsert(jSpell_Text, JsonString(sSpellName)); @@ -3814,7 +3936,7 @@ void ai_CreateQuickWidgetSelectionNUI(object oPC, object oAssociate) } // Set the Layout of the window. json jLayout = NuiCol(jCol); - string sText, sName = GetName(oAssociate); + string sText, sName = ai_StripColorCodes(GetName(oAssociate)); if(GetStringRight(sName, 1) == "s") sName = sName + "'"; else sName = sName + "'s"; int nToken = SetWindow(oPC, jLayout, sAssociateType + AI_QUICK_WIDGET_NUI, sName + " Quick Widget Menu", @@ -4003,72 +4125,70 @@ void ai_CreateQuickWidgetSelectionNUI(object oPC, object oAssociate) // Special abilities and skills. else if(nLevel == 10) { - for(nIndex = 1; nIndex <= AI_MAX_CLASSES_PER_CHARACTER; nIndex++) + json jCreature = ObjectToJson(oAssociate); + json jFeatList = GffGetList(jCreature, "FeatList"); + int nIndex, nSuccessor; + json jFeat = JsonArrayGet(jFeatList, nIndex); + while(JsonGetType(jFeat) != JSON_TYPE_NULL) { - nClassIndex = GetClassByPosition(nIndex, oAssociate); - if(nClassIndex != CLASS_TYPE_INVALID) + nFeat = JsonGetInt(GffGetWord(jFeat, "Feat")); + if(Get2DAString("feat", "USESPERDAY", nFeat) != "" || + Get2DAString("feat", "HostileFeat", nFeat) != "") { - nCounter = 0; - sClassFeats = Get2DAString("classes", "FeatsTable", nClassIndex); - nMax2daRow = Get2DARowCount(sClassFeats); - while(nCounter < nMax2daRow) + // Check for subfeats. + nSpell = StringToInt(Get2DAString("feat", "SPELLID", nFeat)); + nSubSpell = StringToInt(Get2DAString("spells", "SubRadSpell1", nSpell)); + //SendMessageToPC(oPC, "nFeat: " + IntToString(nFeat) + + // " nSpell: " + IntToString(nSpell) + + // " nSubSpell: " + IntToString(nSubSpell)); + if(nSubSpell) { - if(Get2DAString(sClassFeats, "OnMenu", nCounter) != "0") + for(nSubSpellIndex = 1; nSubSpellIndex <= 5; nSubSpellIndex++) { - nFeat = StringToInt(Get2DAString(sClassFeats, "FeatIndex", nCounter)); - if(GetHasFeat(nFeat, oAssociate, TRUE)) + sSubSpellIndex = IntToString(nSubSpellIndex); + nSubSpell = StringToInt(Get2DAString("spells", "SubRadSpell" + sSubSpellIndex, nSpell)); + //SendMessageToPC(oPC, " nSpell: " + IntToString(nSpell) + + // " nSubSpell: " + IntToString(nSubSpell)); + if(nSubSpell != 0) { - // Check for subfeats. - nSpell = StringToInt(Get2DAString("feat", "SPELLID", nFeat)); - nSubSpell = StringToInt(Get2DAString("spells", "SubRadSpell1", nSpell)); - //SendMessageToPC(oPC, "nFeat: " + IntToString(nFeat) + - // " nSpell: " + IntToString(nSpell) + - // " nSubSpell: " + IntToString(nSubSpell)); - if(nSubSpell) - { - for(nSubSpellIndex = 1; nSubSpellIndex <= 5; nSubSpellIndex++) - { - sSubSpellIndex = IntToString(nSubSpellIndex); - nSubSpell = StringToInt(Get2DAString("spells", "SubRadSpell" + sSubSpellIndex, nSpell)); - //SendMessageToPC(oPC, " nSpell: " + IntToString(nSpell) + - // " nSubSpell: " + IntToString(nSubSpell)); - if(nSubSpell != 0) - { - sSpellIcon = Get2DAString("spells", "iConResRef", nSubSpell); - jSpell_Icon = JsonArrayInsert(jSpell_Icon, JsonString(sSpellIcon)); - sSpellName = GetStringByStrRef(StringToInt(Get2DAString("spells", "Name", nSubSpell))); - jSpell_Text = JsonArrayInsert(jSpell_Text, JsonString(sSpellName)); - jSpell = JsonArray(); - jSpell = JsonArrayInsert(jSpell, JsonInt(nSubSpell)); - jSpell = JsonArrayInsert(jSpell, JsonInt(nClass)); - jSpell = JsonArrayInsert(jSpell, JsonInt(-1)); // Level - jSpell = JsonArrayInsert(jSpell, JsonInt(255)); // MetaMagic - jSpell = JsonArrayInsert(jSpell, JsonInt(0)); // Domain - jSpell = JsonArrayInsert(jSpell, JsonInt(nFeat)); - jQuickListArray = JsonArrayInsert(jQuickListArray, jSpell); - } - } - } - else if((nFeat < 71 || nFeat > 81)) - { - sSpellIcon = Get2DAString("feat", "ICON", nFeat); - jSpell_Icon = JsonArrayInsert(jSpell_Icon, JsonString(sSpellIcon)); - sSpellName = GetStringByStrRef(StringToInt(Get2DAString("feat", "FEAT", nFeat))); - jSpell_Text = JsonArrayInsert(jSpell_Text, JsonString(sSpellName)); - jSpell = JsonArray(); - jSpell = JsonArrayInsert(jSpell, JsonInt(nSpell)); - jSpell = JsonArrayInsert(jSpell, JsonInt(nClass)); - jSpell = JsonArrayInsert(jSpell, JsonInt(0)); // Level - jSpell = JsonArrayInsert(jSpell, JsonInt(0)); // MetaMagic - jSpell = JsonArrayInsert(jSpell, JsonInt(0)); // Domain - jSpell = JsonArrayInsert(jSpell, JsonInt(nFeat)); - jQuickListArray = JsonArrayInsert(jQuickListArray, jSpell); - } + sSpellIcon = Get2DAString("spells", "iConResRef", nSubSpell); + jSpell_Icon = JsonArrayInsert(jSpell_Icon, JsonString(sSpellIcon)); + sSpellName = GetStringByStrRef(StringToInt(Get2DAString("spells", "Name", nSubSpell))); + jSpell_Text = JsonArrayInsert(jSpell_Text, JsonString(sSpellName)); + jSpell = JsonArray(); + jSpell = JsonArrayInsert(jSpell, JsonInt(nSubSpell)); + jSpell = JsonArrayInsert(jSpell, JsonInt(nClass)); + jSpell = JsonArrayInsert(jSpell, JsonInt(-1)); // Level + jSpell = JsonArrayInsert(jSpell, JsonInt(255)); // MetaMagic + jSpell = JsonArrayInsert(jSpell, JsonInt(0)); // Domain + jSpell = JsonArrayInsert(jSpell, JsonInt(nFeat)); + jQuickListArray = JsonArrayInsert(jQuickListArray, jSpell); } } - nCounter++; + } + else if((nFeat < 71 || nFeat > 81)) + { + nSuccessor = StringToInt(Get2DAString("feat", "SUCCESSOR", nFeat)); + if(nSuccessor && GetHasFeat(nSuccessor, oAssociate, TRUE)) + { /* Don't do anything we just skip adding this feat. */} + else + { + sSpellIcon = Get2DAString("feat", "ICON", nFeat); + jSpell_Icon = JsonArrayInsert(jSpell_Icon, JsonString(sSpellIcon)); + sSpellName = GetStringByStrRef(StringToInt(Get2DAString("feat", "FEAT", nFeat))); + jSpell_Text = JsonArrayInsert(jSpell_Text, JsonString(sSpellName)); + jSpell = JsonArray(); + jSpell = JsonArrayInsert(jSpell, JsonInt(nSpell)); + jSpell = JsonArrayInsert(jSpell, JsonInt(nClass)); + jSpell = JsonArrayInsert(jSpell, JsonInt(0)); // Level + jSpell = JsonArrayInsert(jSpell, JsonInt(0)); // MetaMagic + jSpell = JsonArrayInsert(jSpell, JsonInt(0)); // Domain + jSpell = JsonArrayInsert(jSpell, JsonInt(nFeat)); + jQuickListArray = JsonArrayInsert(jQuickListArray, jSpell); + } } } + jFeat = JsonArrayGet(jFeatList, ++nIndex); } // Checks for monsters special abilities. int nCounter = 0, nPreviousSpell = -1, nMaxSpellAbility = GetSpellAbilityCount(oAssociate); @@ -4340,7 +4460,13 @@ void ai_CreateSpellMemorizationNUI(object oPC, object oAssociate) jAIData = JsonArraySet(jAIData, 10, jSpells); ai_SetAssociateDbJson(oPC, sAssociateType, "aidata", jAIData); } - if(nClassSelected < 1 || nClassSelected > AI_MAX_CLASSES_PER_CHARACTER) nClassSelected = 1; + if(nClassSelected < 1 || nClassSelected > AI_MAX_CLASSES_PER_CHARACTER) + { + nClassSelected = 1; + jSpells = JsonArraySet(jSpells, 0, JsonInt(1)); + jAIData = JsonArraySet(jAIData, 10, jSpells); + ai_SetAssociateDbJson(oPC, sAssociateType, "aidata", jAIData); + } nClass = GetClassByPosition(nClassSelected, oAssociate); int nMaxMemorizationSlots = GetMemorizedSpellCountByLevel(oAssociate, nClass, nLevelSelected); jRow = JsonArray(); @@ -4372,7 +4498,7 @@ void ai_CreateSpellMemorizationNUI(object oPC, object oAssociate) fX = JsonGetFloat(JsonObjectGet(jLocations, "x")); fY = JsonGetFloat(JsonObjectGet(jLocations, "y")); } - string sText, sName = GetName(oAssociate); + string sText, sName = ai_StripColorCodes(GetName(oAssociate)); if(GetStringRight(sName, 1) == "s") sName = sName + "'"; else sName = sName + "'s"; // Set the Layout of the window. @@ -4637,7 +4763,13 @@ void ai_CreateSpellKnownNUI(object oPC, object oAssociate) jAIData = JsonArraySet(jAIData, 10, jSpells); ai_SetAssociateDbJson(oPC, sAssociateType, "aidata", jAIData); } - if(nClassSelected < 1 || nClassSelected > AI_MAX_CLASSES_PER_CHARACTER) nClassSelected = 1; + if(nClassSelected < 1 || nClassSelected > AI_MAX_CLASSES_PER_CHARACTER) + { + nClassSelected = 1; + jSpells = JsonArraySet(jSpells, 0, JsonInt(1)); + jAIData = JsonArraySet(jAIData, 10, jSpells); + ai_SetAssociateDbJson(oPC, sAssociateType, "aidata", jAIData); + } nClass = GetClassByPosition(nClassSelected, oAssociate); jRow = JsonArray(); for(nIndex = 0; nIndex < 10; nIndex++) @@ -4688,7 +4820,7 @@ void ai_CreateSpellKnownNUI(object oPC, object oAssociate) fX = JsonGetFloat(JsonObjectGet(jLocations, "x")); fY = JsonGetFloat(JsonObjectGet(jLocations, "y")); } - string sText, sName = GetName(oAssociate); + string sText, sName = ai_StripColorCodes(GetName(oAssociate)); if(GetStringRight(sName, 1) == "s") sName = sName + "'"; else sName = sName + "'s"; // Set the Layout of the window. diff --git a/_module/nss/0i_menus_dm.nss b/_module/nss/0i_menus_dm.nss index a2a2cfc..96fc93f 100644 --- a/_module/nss/0i_menus_dm.nss +++ b/_module/nss/0i_menus_dm.nss @@ -268,7 +268,7 @@ void ai_CreateDMOptionsNUI(object oPC) int nMonsterAI = (ResManGetAliasFor("ai_default", RESTYPE_NCS) != ""); int nAssociateAI = (ResManGetAliasFor("ai_a_default", RESTYPE_NCS) != ""); string sText = " [Single player]"; - if(AI_SERVER) sText = " [Server]"; + if(ai_GetIsServer()) sText = " [Server]"; // ************************************************************************* Width / Height // Row 1 ******************************************************************* 500 / 73 json jRow = JsonArrayInsert(JsonArray(), NuiSpacer()); @@ -282,6 +282,8 @@ void ai_CreateDMOptionsNUI(object oPC) jCol = JsonArrayInsert(jCol, NuiRow(jRow)); // Row 3 ******************************************************************* 500 / 129 jRow = CreateButton(JsonArray(), "Plugin Manager", "btn_plugin_manager", 160.0f, 20.0f, -1.0, "btn_plugin_manager_tooltip"); + //jRow = JsonArrayInsert(jRow, NuiSpacer()); + //jRow = CreateButtonSelect(jRow, "Effect Icons", "btn_effect_icon", 160.0f, 20.0f, "btn_effect_icon_tooltip"); jRow = JsonArrayInsert(jRow, NuiSpacer()); jRow = CreateButton(jRow, "Widget Manager", "btn_widget_manager", 160.0f, 20.0f, -1.0, "btn_widget_manager_tooltip"); // Add row to the column. @@ -331,7 +333,8 @@ void ai_CreateDMOptionsNUI(object oPC) jGroupRow = CreateTextEditBox(JsonArray(), "sPlaceHolder", "txt_perception_distance", 2, FALSE, 35.0f, 20.0f, "txt_perception_distance_tooltip"); jGroupRow = CreateLabel(jGroupRow, "meters is the distance a monster can respond to allies.", "lbl_perception_distance", 411.0f, 20.0f, NUI_HALIGN_LEFT, 0, 0.0, "txt_perception_distance_tooltip"); jGroupCol = JsonArrayInsert(jGroupCol, NuiRow(jGroupRow)); - jGroupRow = CreateCheckBox(JsonArray(), " Monsters can prebuff before combat starts.", "chbx_buff_monsters", 450.0, 20.0); + jGroupRow = CreateCheckBox(JsonArray(), " Monsters buff before combat starts.", "chbx_buff_monsters", 275.0, 20.0, "chbx_buff_monsters_tooltip"); + jGroupRow = CreateCheckBox(jGroupRow, " Use all buff spells instead!", "chbx_full_buff", 210.0, 20.0, "chbx_full_buff_tooltip"); jGroupCol = JsonArrayInsert(jGroupCol, NuiRow(jGroupRow)); jGroupRow = CreateCheckBox(JsonArray(), " Monsters can use summons before combat starts.", "chbx_buff_summons", 450.0, 20.0); jGroupCol = JsonArrayInsert(jGroupCol, NuiRow(jGroupRow)); @@ -423,6 +426,10 @@ void ai_CreateDMOptionsNUI(object oPC) // Row 3 NuiSetBind(oPC, nToken, "btn_plugin_manager_event", JsonBool(TRUE)); NuiSetBind(oPC, nToken, "btn_plugin_manager_tooltip", JsonString(" Manages external executable scripts.")); + int bEffectIcon = ai_GetMagicMode(oPC, AI_MAGIC_EFFECT_ICON_REPORT); + //NuiSetBind(oPC, nToken, "btn_effect_icon", JsonBool (bEffectIcon)); + //NuiSetBind(oPC, nToken, "btn_effect_icon_event", JsonBool(TRUE)); + //NuiSetBind(oPC, nToken, "btn_effect_icon_tooltip", JsonString(" When on sends effect icon reports to the chat screen.")); NuiSetBind(oPC, nToken, "btn_widget_manager_event", JsonBool(TRUE)); NuiSetBind(oPC, nToken, "btn_widget_manager_tooltip", JsonString(" Manages widgets the players have access to.")); // Row 3 Label for AI RULES @@ -448,9 +455,15 @@ void ai_CreateDMOptionsNUI(object oPC) NuiSetBind(oPC, nToken, "txt_ai_difficulty_event", JsonBool(TRUE)); NuiSetBind(oPC, nToken, "txt_ai_difficulty", JsonString(IntToString(GetLocalInt(oModule, AI_RULE_AI_DIFFICULTY)))); NuiSetBindWatch(oPC, nToken, "txt_ai_difficulty", TRUE); - NuiSetBind(oPC, nToken, "chbx_buff_monsters_check", JsonBool(GetLocalInt(oModule, AI_RULE_BUFF_MONSTERS))); + int bMonsterBuff = GetLocalInt(oModule, AI_RULE_BUFF_MONSTERS); + NuiSetBind(oPC, nToken, "chbx_buff_monsters_check", JsonBool(bMonsterBuff)); NuiSetBindWatch(oPC, nToken, "chbx_buff_monsters_check", TRUE); NuiSetBind(oPC, nToken, "chbx_buff_monsters_event", JsonBool(TRUE)); + NuiSetBind(oPC, nToken, "chbx_buff_monsters_tooltip", JsonString(" Monsters will cast all longer duration buff spells just before combat starts.")); + NuiSetBind(oPC, nToken, "chbx_full_buff_check", JsonBool(GetLocalInt(oModule, AI_RULE_FULL_BUFF_MONSTERS))); + NuiSetBindWatch(oPC, nToken, "chbx_full_buff_check", TRUE); + NuiSetBind(oPC, nToken, "chbx_full_buff_event", JsonBool(bMonsterBuff)); + NuiSetBind(oPC, nToken, "chbx_full_buff_tooltip", JsonString(" Monsters will cast all buff spells just before combat starts! VERY DIFFICULTY!")); NuiSetBind(oPC, nToken, "chbx_buff_summons_check", JsonBool(GetLocalInt(oModule, AI_RULE_PRESUMMON))); NuiSetBindWatch(oPC, nToken, "chbx_buff_summons_check", TRUE); NuiSetBind(oPC, nToken, "chbx_buff_summons_event", JsonBool(TRUE)); @@ -876,6 +889,9 @@ void ai_CreateDMWidgetManagerNUI(object oPC) jRow = CreateLabel(JsonArray(), "Having a check next to a button will remove that button from the players menus.", "lbl_info2", 636.0, 15.0); jCol = JsonArrayInsert(jCol, NuiRow(jRow)); // Row 4 ******************************************************************* 575 / 162 + jRow = CreateButtonImage(jRow, "ir_invite", "btn_toggle_assoc_widget", 35.0f, 35.0f, 0.0, "btn_toggle_assoc_widget_tooltip"); + jRow = CreateCheckBox(jRow, "", "chbx_toggle_assoc_widget", 25.0, 20.0, "btn_toggle_assoc_widget_tooltip"); + jRow = CreateButtonImage(JsonArray(), "ir_action", "btn_cmd_action", 35.0f, 35.0f, 0.0, "btn_cmd_action_tooltip"); jRow = CreateCheckBox(jRow, "", "chbx_cmd_action", 25.0, 20.0, "btn_cmd_action_tooltip"); @@ -903,10 +919,11 @@ void ai_CreateDMWidgetManagerNUI(object oPC) jRow = CreateButtonImage(jRow, "ir_scommand", "btn_cmd_ai_script", 35.0f, 35.0f, 0.0, "btn_cmd_ai_script_tooltip"); jRow = CreateCheckBox(jRow, "", "chbx_cmd_ai_script", 25.0, 20.0, "btn_cmd_ai_script_tooltip"); - jRow = CreateButtonImage(jRow, "isk_settrap", "btn_cmd_place_trap", 35.0f, 35.0f, 0.0, "btn_cmd_place_trap_tooltip"); - jRow = CreateCheckBox(jRow, "", "chbx_cmd_place_trap", 25.0, 20.0, "btn_cmd_place_trap_tooltip"); jCol = JsonArrayInsert(jCol, NuiRow(jRow)); // Row 5 ******************************************************************* 575 / 205 + jRow = CreateButtonImage(jRow, "isk_settrap", "btn_cmd_place_trap", 35.0f, 35.0f, 0.0, "btn_cmd_place_trap_tooltip"); + jRow = CreateCheckBox(jRow, "", "chbx_cmd_place_trap", 25.0, 20.0, "btn_cmd_place_trap_tooltip"); + jRow = CreateButtonImage(JsonArray(), "isk_spellcraft", "btn_quick_widget", 35.0f, 35.0f, 0.0, "btn_quick_widget_tooltip"); jRow = CreateCheckBox(jRow, "", "chbx_quick_widget", 25.0, 20.0, "btn_quick_widget_tooltip"); @@ -934,10 +951,10 @@ void ai_CreateDMWidgetManagerNUI(object oPC) jRow = CreateButtonImage(jRow, "ir_examine", "btn_camera", 35.0f, 35.0f, 0.0, "btn_camera_tooltip"); jRow = CreateCheckBox(jRow, "", "chbx_camera", 25.0, 20.0, "btn_camera_tooltip"); - jRow = CreateButtonImage(jRow, "ir_pickup", "btn_inventory", 35.0f, 35.0f, 0.0, "btn_inventory_tooltip"); - jRow = CreateCheckBox(jRow, "", "chbx_inventory", 25.0, 20.0, "btn_inventory_tooltip"); jCol = JsonArrayInsert(jCol, NuiRow(jRow)); // Row 6 ******************************************************************* 575 / 248 + jRow = CreateButtonImage(jRow, "ir_pickup", "btn_inventory", 35.0f, 35.0f, 0.0, "btn_inventory_tooltip"); + jRow = CreateCheckBox(jRow, "", "chbx_inventory", 25.0, 20.0, "btn_inventory_tooltip"); jRow = CreateButtonImage(JsonArray(), "ife_familiar", "btn_familiar", 35.0f, 35.0f, 0.0, "btn_familiar_tooltip"); jRow = CreateCheckBox(jRow, "", "chbx_familiar", 25.0, 20.0, "btn_familiar_tooltip"); @@ -966,10 +983,10 @@ void ai_CreateDMWidgetManagerNUI(object oPC) jRow = CreateButtonImage(jRow, "ir_open", "btn_open_door", 35.0f, 35.0f, 0.0, "btn_open_door_tooltip"); jRow = CreateCheckBox(jRow, "", "chbx_open_door", 25.0, 20.0, "btn_open_door_tooltip"); - jRow = CreateButtonImage(jRow, "isk_distrap", "btn_traps", 35.0f, 35.0f, 0.0, "btn_traps_tooltip"); - jRow = CreateCheckBox(jRow, "", "chbx_traps", 25.0, 20.0, "btn_traps_tooltip"); jCol = JsonArrayInsert(jCol, NuiRow(jRow)); // Row 7 ******************************************************************* 575 / 291 + jRow = CreateButtonImage(jRow, "isk_distrap", "btn_traps", 35.0f, 35.0f, 0.0, "btn_traps_tooltip"); + jRow = CreateCheckBox(jRow, "", "chbx_traps", 25.0, 20.0, "btn_traps_tooltip"); jRow = CreateButtonImage(JsonArray(), "isk_olock", "btn_pick_locks", 35.0f, 35.0f, 0.0, "btn_pick_locks_tooltip"); jRow = CreateCheckBox(jRow, "", "chbx_pick_locks", 25.0, 20.0, "btn_pick_locks_tooltip"); @@ -998,10 +1015,11 @@ void ai_CreateDMWidgetManagerNUI(object oPC) jRow = CreateButtonImage(jRow, "isk_heal", "btn_heal_out", 35.0f, 35.0f, 0.0, "btn_heal_out_tooltip"); jRow = CreateCheckBox(jRow, "", "chbx_heal_out", 25.0, 20.0, "btn_heal_out_tooltip"); - jRow = CreateButtonImage(jRow, "dm_heal", "btn_heal_in", 35.0f, 35.0f, 0.0, "btn_heal_in_tooltip"); - jRow = CreateCheckBox(jRow, "", "chbx_heal_in", 25.0, 20.0, "btn_heal_in_tooltip"); jCol = JsonArrayInsert(jCol, NuiRow(jRow)); // Row 8 ******************************************************************* 575 / 334 + jRow = CreateButtonImage(jRow, "dm_heal", "btn_heal_in", 35.0f, 35.0f, 0.0, "btn_heal_in_tooltip"); + jRow = CreateCheckBox(jRow, "", "chbx_heal_in", 25.0, 20.0, "btn_heal_in_tooltip"); + jRow = CreateButtonImage(JsonArray(), "ir_heal", "btn_heals_onoff", 35.0f, 35.0f, 0.0, "btn_heals_onoff_tooltip"); jRow = CreateCheckBox(jRow, "", "chbx_heals_onoff", 25.0, 20.0, "btn_heals_onoff_tooltip"); @@ -1023,7 +1041,6 @@ void ai_CreateDMWidgetManagerNUI(object oPC) jRow = CreateButtonImage(jRow, "ir_dmchat", "btn_perc_range", 35.0f, 35.0f, 0.0, "btn_perc_range_tooltip"); jRow = CreateCheckBox(jRow, "", "chbx_perc_range", 25.0, 20.0, "btn_perc_range_tooltip"); - // Add row to the column. jCol = JsonArrayInsert(jCol, NuiRow(jRow)); float fHeight = 334.0; // Get the window location to restore it from the database. @@ -1049,6 +1066,7 @@ void ai_CreateDMWidgetManagerNUI(object oPC) // Row 2 & 3 Labels. // Load all the buttons states. //int bAIWidgetLock = ai_GetDMWAccessButton(BTN_WIDGET_LOCK); + int bAssocWidgetOff = ai_GetDMWAccessButton(BTN_ASSOC_WIDGETS_OFF); int bCmdAction = ai_GetDMWAccessButton(BTN_CMD_ACTION); int bCmdGuard = ai_GetDMWAccessButton(BTN_CMD_GUARD); int bCmdHold = ai_GetDMWAccessButton(BTN_CMD_HOLD); @@ -1101,6 +1119,12 @@ void ai_CreateDMWidgetManagerNUI(object oPC) SetLocalInt(oPC, "CHBX_SKIP", TRUE); DelayCommand(2.0, DeleteLocalInt(oPC, "CHBX_SKIP")); // Row 4 + NuiSetBind(oPC, nToken, "chbx_toggle_assoc_widget_check", JsonBool (bCmdAction)); + NuiSetBindWatch(oPC, nToken, "chbx_toggle_assoc_widget_check", TRUE); + NuiSetBind(oPC, nToken, "chbx_toggle_assoc_widget_event", JsonBool(TRUE)); + NuiSetBind(oPC, nToken, "btn_toggle_assoc_widget_event", JsonBool (TRUE)); + NuiSetBind(oPC, nToken, "btn_toggle_assoc_widget_tooltip", JsonString(" Associate widgets")); + NuiSetBind(oPC, nToken, "chbx_cmd_action_check", JsonBool (bCmdAction)); NuiSetBindWatch(oPC, nToken, "chbx_cmd_action_check", TRUE); NuiSetBind(oPC, nToken, "chbx_cmd_action_event", JsonBool(TRUE)); @@ -1154,13 +1178,13 @@ void ai_CreateDMWidgetManagerNUI(object oPC) NuiSetBind(oPC, nToken, "chbx_cmd_ai_script_event", JsonBool(TRUE)); NuiSetBind(oPC, nToken, "btn_cmd_ai_script_event", JsonBool (TRUE)); NuiSetBind(oPC, nToken, "btn_cmd_ai_script_tooltip", JsonString(" Combat Tactics button")); - + // Row 5 NuiSetBind(oPC, nToken, "chbx_cmd_place_trap_check", JsonBool (bCmdPlacetrap)); NuiSetBindWatch (oPC, nToken, "chbx_cmd_place_trap_check", TRUE); NuiSetBind(oPC, nToken, "chbx_cmd_place_trap_event", JsonBool(TRUE)); NuiSetBind(oPC, nToken, "btn_cmd_place_trap_event", JsonBool (TRUE)); NuiSetBind(oPC, nToken, "btn_cmd_place_trap_tooltip", JsonString (" Place Trap button")); - // Row 5 + NuiSetBind(oPC, nToken, "chbx_quick_widget_check", JsonBool (bSpellWidget)); NuiSetBindWatch (oPC, nToken, "chbx_quick_widget_check", TRUE); NuiSetBind(oPC, nToken, "chbx_quick_widget_event", JsonBool(TRUE)); @@ -1214,13 +1238,13 @@ void ai_CreateDMWidgetManagerNUI(object oPC) NuiSetBind(oPC, nToken, "chbx_camera_event", JsonBool(TRUE)); NuiSetBind(oPC, nToken, "btn_camera_event", JsonBool (TRUE)); NuiSetBind(oPC, nToken, "btn_camera_tooltip", JsonString(" Change Camera button")); - + // Row 6 NuiSetBind(oPC, nToken, "chbx_inventory_check", JsonBool (bInventory)); NuiSetBindWatch (oPC, nToken, "chbx_inventory_check", TRUE); NuiSetBind(oPC, nToken, "chbx_inventory_event", JsonBool(TRUE)); NuiSetBind(oPC, nToken, "btn_inventory_event", JsonBool (TRUE)); NuiSetBind(oPC, nToken, "btn_inventory_tooltip", JsonString(" Open Inventory button")); - // Row 6 + NuiSetBind(oPC, nToken, "chbx_familiar_check", JsonBool(bBtnFamiliar)); NuiSetBindWatch (oPC, nToken, "chbx_familiar_check", TRUE); NuiSetBind(oPC, nToken, "chbx_familiar_event", JsonBool(TRUE)); @@ -1274,13 +1298,13 @@ void ai_CreateDMWidgetManagerNUI(object oPC) NuiSetBind(oPC, nToken, "chbx_open_door_event", JsonBool(TRUE)); NuiSetBind(oPC, nToken, "btn_open_door_event", JsonBool(TRUE)); NuiSetBind (oPC, nToken, "btn_open_door_tooltip", JsonString(" Open Door button")); - + // Row 7 NuiSetBind(oPC, nToken, "chbx_traps_check", JsonBool(bTraps)); NuiSetBindWatch (oPC, nToken, "chbx_traps_check", TRUE); NuiSetBind(oPC, nToken, "chbx_traps_event", JsonBool(TRUE)); NuiSetBind(oPC, nToken, "btn_traps_event", JsonBool(TRUE)); NuiSetBind (oPC, nToken, "btn_traps_tooltip", JsonString(" Disable Traps button")); - // Row 7 + NuiSetBind(oPC, nToken, "chbx_pick_locks_check", JsonBool(bPickLocks)); NuiSetBindWatch(oPC, nToken, "chbx_pick_locks_check", TRUE); NuiSetBind(oPC, nToken, "chbx_pick_locks_event", JsonBool(TRUE)); @@ -1334,13 +1358,13 @@ void ai_CreateDMWidgetManagerNUI(object oPC) NuiSetBind(oPC, nToken, "chbx_heal_out_event", JsonBool(TRUE)); NuiSetBind(oPC, nToken, "btn_heal_out_event", JsonBool(TRUE)); NuiSetBind(oPC, nToken, "btn_heal_out_tooltip", JsonString(" Heal Out of Combat button")); - + // Row 8 NuiSetBind(oPC, nToken, "chbx_heal_in_check", JsonBool(bHealIn)); NuiSetBindWatch (oPC, nToken, "chbx_heal_in_check", TRUE); NuiSetBind(oPC, nToken, "chbx_heal_in_event", JsonBool(TRUE)); NuiSetBind(oPC, nToken, "btn_heal_in_event", JsonBool (TRUE)); NuiSetBind(oPC, nToken, "btn_heal_in_tooltip", JsonString(" Heal In Combat button")); - // Row 8 + NuiSetBind(oPC, nToken, "chbx_heals_onoff_check", JsonBool(bSelfHealOnOff)); NuiSetBindWatch (oPC, nToken, "chbx_heals_onoff_check", TRUE); NuiSetBind(oPC, nToken, "chbx_heals_onoff_event", JsonBool(TRUE)); diff --git a/_module/nss/0i_module.nss b/_module/nss/0i_module.nss index 6d50182..0fb394f 100644 --- a/_module/nss/0i_module.nss +++ b/_module/nss/0i_module.nss @@ -7,15 +7,18 @@ #include "x2_inc_switches" #include "0i_associates" #include "0i_menus" +#include "0i_menus_dm" #include "0i_player_target" #include "0i_gui_events" // Add to nw_c2_default9 OnSpawn event script of monsters and int ai_OnMonsterSpawn(object oCreature); // Add to nw_ch_ac9 OnSpawn event script of henchman. void ai_OnAssociateSpawn(object oCreature); -// Run all of the players starting scripts. +// Run all of the game setup scripts and build for PC. // If oPC is passed as Invalid then it will get the firt PC in the game. void ai_CheckPCStart(object oPC = OBJECT_INVALID); +// Run all of the games setup scripts and build for DM. +void ai_CheckDMStart(object oDM); // Checks to see if we should change the monster via Json. int ai_ChangeMonster(object oCreature, object oModule); // Checks to see if we should change the associate via Json. @@ -45,7 +48,7 @@ int ai_OnMonsterSpawn(object oCreature) int nInfiniteDungeons; int nPRC = GetLocalInt(oModule, AI_USING_PRC); // If you are running a server this will not affect the module. - if(!AI_SERVER) + if(!ai_GetIsServer()) { ai_CheckPCStart(); string sModuleName = GetModuleName(); @@ -107,7 +110,7 @@ void ai_OnAssociateSpawn(object oCreature) SetLocalInt(oCreature, AI_ONSPAWN_EVENT, TRUE); int bPRC = GetLocalInt(GetModule(), AI_USING_PRC); // If you are running a server this will not affect the module. - if(!AI_SERVER) + if(!ai_GetIsServer()) { if(bPRC) ai_SetPRCAssociateEventScripts(oCreature); } @@ -117,8 +120,17 @@ void ai_OnAssociateSpawn(object oCreature) // We change this script so we can setup permanent summons on/off. // If you don't use this you may remove the next three lines. string sScript = GetEventScript(oCreature, EVENT_SCRIPT_CREATURE_ON_DEATH); - SetLocalString(oCreature, "AI_ON_DEATH", sScript); - SetEventScript(oCreature, EVENT_SCRIPT_CREATURE_ON_DEATH, "0e_ch_7_ondeath"); + // If our script is set in the OnDeath event then don't save as secondary. + if(sScript != "0e_ch_7_ondeath") + { + SetLocalString(oCreature, "AI_ON_DEATH", sScript); + SetEventScript(oCreature, EVENT_SCRIPT_CREATURE_ON_DEATH, "0e_ch_7_ondeath"); + } + else if(GetLocalString(oCreature, "AI_ON_DEATH") == "0e_ch_7_ondeath") + { + // If we have somehow saved our death script then change to default. + SetLocalString(oCreature, "AI_ON_DEATH", "nw_ch_ac7"); + } } // Initialize Associate modes for basic use. ai_SetListeningPatterns(oCreature); @@ -147,12 +159,28 @@ void ai_CheckPCStart(object oPC = OBJECT_INVALID) ai_SetAIRules(); ai_CheckAssociateData(oPC, oPC, "pc"); ai_StartupPlugins(oPC); - ai_SetupPlayerTarget(oPC); - ai_SetupModuleGUIEvents(oPC); + ai_SetupPlayerTarget(); + ai_SetupModuleGUIEvents(); ai_CreateWidgetNUI(oPC, oPC); ai_SetNormalAppearance(oPC); } } +void ai_CheckDMStart(object oDM) +{ + if(!NuiFindWindow(oDM, "dm" + AI_WIDGET_NUI)) + { + object oModule = GetModule(); + // Do PRC check and save variable to the module. + if(ResManGetAliasFor("prc_ai_fam_percp", RESTYPE_NCS) != "") + SetLocalInt(oModule, AI_USING_PRC, TRUE); + ai_SetAIRules(); + ai_CheckDMData(oDM); + ai_StartupPlugins(oDM); + ai_SetupPlayerTarget(); + ai_SetupModuleGUIEvents(); + ai_CreateDMWidgetNUI(oDM); + } +} void ai_CopyMonster(object oCreature, object oModule) { // After setting the monster lets see if we should copy it. @@ -179,6 +207,7 @@ void ai_CreateMonster(json jCreature, location lLocation, object oModule) { //WriteTimestampedLogEntry("0i_module, 181, " + JsonDump(jCreature, 1)); object oCreature = JsonToObject(jCreature, lLocation, OBJECT_INVALID, TRUE); + if(AI_DEBUG) ai_Debug("0i_module", "210", "Creating: " + GetName(oCreature)); // Lets set the new version as spawned so we skip the initial setup again. SetLocalInt(oCreature, AI_ONSPAWN_EVENT, TRUE); /*if(GetLocalInt(oModule, AI_RULE_CORPSES_STAY)) @@ -188,6 +217,12 @@ void ai_CreateMonster(json jCreature, location lLocation, object oModule) } */ if(AI_DEBUG) ai_Debug("0i_module", "187", GetName(oCreature)); ai_CopyMonster(oCreature, oModule); + // This is a hak to allow wild shaped creatures to be able to attack! + if(GetHasFeat(FEAT_WILD_SHAPE, oCreature)) + { + AssignCommand(oCreature, ActionUseFeat(FEAT_WILD_SHAPE, oCreature, SUBFEAT_WILD_SHAPE_BADGER)); + DelayCommand(4.0, ai_RemoveASpecificEffect(oCreature, EFFECT_TYPE_POLYMORPH)); + } return; } json ai_SetCompanionSummoning(object oCreature, json jCreature) @@ -198,7 +233,7 @@ json ai_SetCompanionSummoning(object oCreature, json jCreature) jFamiliar = JsonObjectSet(jFamiliar, "value", JsonString("Summoned Familiar")); jCreature = JsonObjectSet(jCreature, "FamiliarName", jFamiliar); jFamiliar = JsonObjectGet(jCreature, "FamiliarType"); - jFamiliar = JsonObjectSet(jFamiliar, "value", JsonInt(Random(11))); + jFamiliar = JsonObjectSet(jFamiliar, "value", JsonInt(10)); //JsonInt(Random(11))); return JsonObjectSet(jCreature, "FamiliarType", jFamiliar); } if(GetHasFeat(FEAT_ANIMAL_COMPANION , oCreature, TRUE)) @@ -217,9 +252,9 @@ int ai_ChangeMonster(object oCreature, object oModule) object oPC = GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR, PLAYER_CHAR_IS_PC, oCreature); // Lets not mess up the cutscenes with silly RULES. if(GetCutsceneMode(oPC)) return FALSE; - //float fDistance = GetDistanceBetween(oCreature, oPC); + float fDistance = GetDistanceBetween(oCreature, oPC); // Looks bad to see creatures wink in and out plus could cause module errors. - //if(fDistance != 0.0 && fDistance < AI_RANGE_PERCEPTION) return oCreature; + if(fDistance != 0.0 && fDistance < 20.0) return FALSE; if(IsInConversation(oCreature)) return FALSE; json jCreature = ObjectToJson(oCreature, TRUE); // We now use plugins to mod our monsters. @@ -238,8 +273,8 @@ int ai_ChangeMonster(object oCreature, object oModule) jCreature = GetLocalJson(oModule, AI_MONSTER_JSON); } int nSummon = GetLocalInt(oModule, AI_RULE_SUMMON_COMPANIONS) && - (GetHasFeat(FEAT_SUMMON_FAMILIAR, oCreature, TRUE)) || - GetHasFeat(FEAT_ANIMAL_COMPANION, oCreature, TRUE); + (GetHasFeat(FEAT_SUMMON_FAMILIAR, oCreature, TRUE) || + GetHasFeat(FEAT_ANIMAL_COMPANION, oCreature, TRUE)); int nPercDist = GetLocalInt(oModule, AI_RULE_MON_PERC_DISTANCE) != 11 && GetReputation(oCreature, oPC) < 11; //WriteTimestampedLogEntry(GetName(oCreature) + ": fDistance: " + FloatToString(fDistance, 0, 2) + " nSummon: " + IntToString(nSummon) + @@ -256,10 +291,12 @@ int ai_ChangeMonster(object oCreature, object oModule) if(nSummon) jCreature = ai_SetCompanionSummoning(oCreature, jCreature); SetLocalInt(oModule, AI_MONSTER_CHANGED, TRUE); } + // Did any of the Monster mods get used? These are done in independent mod scripts. if(GetLocalInt(oModule, AI_MONSTER_CHANGED)) { SetIsDestroyable(TRUE, FALSE, FALSE, oCreature); location lLocation = GetLocation(oCreature); + if(AI_DEBUG) ai_Debug("0i_module", "299", "Destroying: " + GetName(oCreature)); DestroyObject(oCreature); AssignCommand(oModule, DelayCommand(1.0, ai_CreateMonster(jCreature, lLocation, oModule))); DeleteLocalInt(oModule, AI_MONSTER_CHANGED); @@ -268,11 +305,18 @@ int ai_ChangeMonster(object oCreature, object oModule) else ai_CopyMonster(oCreature, oModule); DeleteLocalJson(oModule, AI_MONSTER_JSON); DeleteLocalObject(oModule, AI_MONSTER_OBJECT); + // This is a hak to allow wild shaped creatures to be able to attack! + if(GetHasFeat(FEAT_WILD_SHAPE)) + { + AssignCommand(oCreature, ActionUseFeat(FEAT_WILD_SHAPE, oCreature, SUBFEAT_WILD_SHAPE_BADGER)); + DelayCommand(4.0, ai_RemoveASpecificEffect(oCreature, EFFECT_TYPE_POLYMORPH)); + } return FALSE; } // Special event scripts for Infinite Dungeons! void ai_SetIDMonsterEventScripts(object oCreature) { + if(GetIsPC(oCreature)) return; //if(AI_DEBUG) ai_Debug("0i_module", "433", "Changing " + GetName(oCreature) + "'s Infinte Dungeons event scripts."); //********** On Heartbeat ********** string sScript = GetEventScript(oCreature, EVENT_SCRIPT_CREATURE_ON_HEARTBEAT); @@ -355,6 +399,7 @@ void ai_SetIDMonsterEventScripts(object oCreature) // Special event scripts for Infinite Dungeons with PRC! void ai_SetPRCIDMonsterEventScripts(object oCreature) { + if(GetIsPC(oCreature)) return; //if(AI_DEBUG) ai_Debug("0i_module", "433", "Changing " + GetName(oCreature) + "'s Infinte Dungeons event scripts for PRC."); //********** On Heartbeat ********** string sScript = GetEventScript(oCreature, EVENT_SCRIPT_CREATURE_ON_HEARTBEAT); @@ -437,6 +482,7 @@ void ai_SetPRCIDMonsterEventScripts(object oCreature) // Special event scripts for PRC associates! void ai_SetPRCAssociateEventScripts(object oCreature) { + if(GetIsPC(oCreature)) return; //if(AI_DEBUG) ai_Debug("0i_module", "433", "Changing " + GetName(oCreature) + "'s Infinte Dungeons event scripts for PRC."); //********** On Heartbeat ********** string sScript = GetEventScript(oCreature, EVENT_SCRIPT_CREATURE_ON_HEARTBEAT); @@ -494,6 +540,7 @@ void ai_SetPRCAssociateEventScripts(object oCreature) } void ai_ChangeEventScriptsForMonster(object oCreature) { + if(GetIsPC(oCreature)) return; //********** On Heartbeat ********** string sScript = GetEventScript(oCreature, EVENT_SCRIPT_CREATURE_ON_HEARTBEAT); if(sScript == "0e_c2_1_hb") SetEventScript(oCreature, EVENT_SCRIPT_CREATURE_ON_HEARTBEAT, "nw_c2_default1"); @@ -528,6 +575,7 @@ void ai_ChangeEventScriptsForMonster(object oCreature) } void ai_ChangeEventScriptsForAssociate(object oCreature) { + if(GetIsPC(oCreature)) return; SetEventScript(oCreature, EVENT_SCRIPT_CREATURE_ON_HEARTBEAT, "nw_ch_ac1"); SetEventScript(oCreature, EVENT_SCRIPT_CREATURE_ON_NOTICE, "nw_ch_ac2"); SetEventScript(oCreature, EVENT_SCRIPT_CREATURE_ON_END_COMBATROUND, "nw_ch_ac3"); diff --git a/_module/nss/0i_player_target.nss b/_module/nss/0i_player_target.nss index bed4834..5cdba8e 100644 --- a/_module/nss/0i_player_target.nss +++ b/_module/nss/0i_player_target.nss @@ -8,11 +8,9 @@ #include "0i_menus" // Setup an AI OnPlayerTarget Event script while allowing any module onplayer // target event script to still work. -void ai_SetupPlayerTarget(object oCreature); +void ai_SetupPlayerTarget(); // Selects a target for oAssocite to follow. void ai_AllSelectTarget(object oPC, object oAssociate, object oTarget); -// Removes the Cutscene ghosts and variables from all associates. For original AI scripts. -void ai_OriginalRemoveAllActionMode(object oPC); // Removes the Cutscene ghosts and Command mode from all associates. void ai_RemoveAllActionMode(object oPC); // Once a trap has been selected from the associates inventory move to placing the trap. @@ -30,7 +28,14 @@ void ai_UpdateAssociateWidget(object oPC, object oAssociate); // Sets oAssociates action mode for nFeat from the quick widget menu int ai_SetActionMode(object oAssociate, int nFeat); -void ai_SetupPlayerTarget(object oCreature) +void ai_EnterAssociateTargetMode(object oPC, object oAssociate) +{ + SetLocalObject(oPC, AI_TARGET_ASSOCIATE, oAssociate); + SetLocalString(oPC, AI_TARGET_MODE, "ASSOCIATE_ACTION"); + SetLocalInt(oPC, AI_TARGET_MODE_ON, TRUE); + EnterTargetingMode(oPC, OBJECT_TYPE_ALL, MOUSECURSOR_ACTION, MOUSECURSOR_NOWALK); +} +void ai_SetupPlayerTarget() { object oModule = GetModule(); string sModuleTargetEvent = GetEventScript(oModule, EVENT_SCRIPT_MODULE_ON_PLAYER_TARGET); @@ -40,129 +45,7 @@ void ai_SetupPlayerTarget(object oCreature) } SetEventScript(oModule, EVENT_SCRIPT_MODULE_ON_PLAYER_TARGET, "0e_player_target"); } -void ai_OriginalActionAssociate(object oPC, object oTarget, location lLocation) -{ - object oAssociate = OBJECT_SELF; - if(!GetLocalInt(oAssociate, sGhostModeVarname) && GetLocalInt(oPC, sGhostModeVarname)) - { - effect eGhost = EffectCutsceneGhost(); - ApplyEffectToObject(DURATION_TYPE_PERMANENT, eGhost, oAssociate); - SetLocalInt(oAssociate, sGhostModeVarname, TRUE); - } - int nObjectType = GetObjectType(oTarget); - ai_ClearCreatureActions(TRUE); - if(oTarget == GetArea(oPC)) - { - ActionMoveToLocation(lLocation, TRUE); - if(GetLocalObject(oPC, AI_FOLLOW_TARGET) == oAssociate) - { - float fFollowDistance = 3.0; - AssignCommand(oPC, ai_ClearCreatureActions()); - AssignCommand(oPC, ActionForceFollowObject(oAssociate, fFollowDistance)); - } - } - else if(nObjectType == OBJECT_TYPE_CREATURE) - { - if(oTarget != GetLocalObject(oPC, AI_TARGET_ASSOCIATE)) - { - if(GetMaster(oTarget) == oPC) - { - SetLocalString(oPC, AI_TARGET_MODE, "ASSOCIATE_ACTION"); - SetLocalObject(oPC, AI_TARGET_ASSOCIATE, oTarget); - ai_SendMessages(GetName(oTarget) + " is now in Action Mode.", AI_COLOR_YELLOW, oPC); - } - else ActionMoveToObject(oTarget, TRUE); - } - } - else if(nObjectType == OBJECT_TYPE_DOOR) - { - if(GetIsTrapped(oTarget) && GetAssociateState(NW_ASC_DISARM_TRAPS, oAssociate)) - { - if(GetTrapDetectedBy(oTarget, oPC)) SetTrapDetectedBy(oTarget, oAssociate); - if(GetTrapDetectedBy(oTarget, oAssociate)) - { - bkAttemptToDisarmTrap(oTarget); - EnterTargetingMode(oPC, OBJECT_TYPE_ALL, MOUSECURSOR_ACTION, MOUSECURSOR_NOWALK); - return; - } - } - if(GetLocked(oTarget)) bkAttemptToOpenLock(oTarget); - if(GetIsOpen(oTarget)) - { - ActionCloseDoor(oTarget, TRUE); - } - else ActionOpenDoor(oTarget, TRUE); - } - else if(nObjectType == OBJECT_TYPE_ITEM) - { - ActionPickUpItem(oTarget); - } - else if(nObjectType == OBJECT_TYPE_PLACEABLE) - { - ActionMoveToObject(oTarget, TRUE); - if(GetHasInventory(oTarget)) - { - if(GetIsTrapped(oTarget) && GetAssociateState(NW_ASC_RETRY_OPEN_LOCKS, oAssociate)) - { - if(GetTrapDetectedBy(oTarget, oPC)) SetTrapDetectedBy(oTarget, oAssociate); - if(GetTrapDetectedBy(oTarget, oAssociate)) - { - bkAttemptToDisarmTrap(oTarget); - EnterTargetingMode(oPC, OBJECT_TYPE_ALL, MOUSECURSOR_ACTION, MOUSECURSOR_NOWALK); - return; - } - if(GetLocked(oTarget)) - { - if(GetAssociateState(NW_ASC_RETRY_OPEN_LOCKS, oAssociate)) - { - bkAttemptToOpenLock(oTarget); - } - else AssignCommand(oAssociate, ai_HaveCreatureSpeak(oAssociate, 0, "This " + GetName(oTarget) + " is locked!")); - EnterTargetingMode(oPC, OBJECT_TYPE_ALL, MOUSECURSOR_ACTION, MOUSECURSOR_NOWALK); - return; - } - DoPlaceableObjectAction(oTarget, PLACEABLE_ACTION_USE); - } - else if(GetLocked(oTarget)) - { - if(GetAssociateState(NW_ASC_RETRY_OPEN_LOCKS, oAssociate)) - { - bkAttemptToOpenLock(oTarget); - } - else AssignCommand(oAssociate, ai_HaveCreatureSpeak(oAssociate, 0, "This " + GetName(oTarget) + " is locked!")); - EnterTargetingMode(oPC, OBJECT_TYPE_ALL, MOUSECURSOR_ACTION, MOUSECURSOR_NOWALK); - return; - } - DoPlaceableObjectAction(oTarget, PLACEABLE_ACTION_USE); - } - DoPlaceableObjectAction(oTarget, PLACEABLE_ACTION_USE); - } - else if(nObjectType == OBJECT_TYPE_TRIGGER) - { - if(GetIsTrapped(oTarget) && GetAssociateState(NW_ASC_RETRY_OPEN_LOCKS, oAssociate)) - { - if(GetTrapDetectedBy(oTarget, oPC)) SetTrapDetectedBy(oTarget, oAssociate); - if(GetTrapDetectedBy(oTarget, oAssociate)) bkAttemptToDisarmTrap(oTarget); - } - } - EnterTargetingMode(oPC, OBJECT_TYPE_ALL, MOUSECURSOR_ACTION, MOUSECURSOR_NOWALK); -} -void ai_OriginalActionAllAssociates(object oPC, object oTarget, location lLocation) -{ - object oAssociate; - int nIndex; - for(nIndex = 1; nIndex <= AI_MAX_HENCHMAN; nIndex++) - { - oAssociate = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC, nIndex); - if(oAssociate != OBJECT_INVALID) AssignCommand(oAssociate, ai_OriginalActionAssociate(oPC, oTarget, lLocation)); - } - for(nIndex = 2; nIndex < 6; nIndex++) - { - oAssociate = GetAssociate(nIndex, oPC); - if(oAssociate != OBJECT_INVALID) AssignCommand(oAssociate, ai_OriginalActionAssociate(oPC, oTarget, lLocation)); - } -} -void ai_ActionAssociate(object oPC, object oTarget, location lLocation) +void ai_ActionAssociate(object oPC, object oTarget, location lLocation, int bActionAll = FALSE) { object oAssociate = OBJECT_SELF; if(ai_GetAIMode(oPC, AI_MODE_ACTION_GHOST) && @@ -204,12 +87,14 @@ void ai_ActionAssociate(object oPC, object oTarget, location lLocation) { SetLocalString(oAssociate, AI_COMBAT_SCRIPT, GetLocalString(oAssociate, AI_DEFAULT_SCRIPT)); } - if(ai_GetIsInCombat(oAssociate)) ai_DoAssociateCombatRound(oAssociate, oTarget); - else - { - ai_HaveCreatureSpeak(oAssociate, 5, ":0:1:2:3:6:"); - ai_StartAssociateCombat(oAssociate, oTarget); - } + //if(ai_GetIsInCombat(oAssociate)) ai_DoAssociateCombatRound(oAssociate, oTarget); + //else + //{ + // ai_HaveCreatureSpeak(oAssociate, 5, ":0:1:2:3:6:"); + // ai_StartAssociateCombat(oAssociate, oTarget); + //} + if(ai_GetIsRangeWeapon(GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oAssociate))) ActionAttack(oTarget, TRUE); + else ActionAttack(oTarget); ai_SendMessages(GetName(oAssociate) + " is attacking " + GetName(oTarget), AI_COLOR_RED, oPC); } else @@ -231,7 +116,7 @@ void ai_ActionAssociate(object oPC, object oTarget, location lLocation) if(ai_ReactToTrap(oAssociate, oTarget, TRUE)) bStopAction = TRUE; if(bStopAction) { - EnterTargetingMode(oPC, OBJECT_TYPE_ALL, MOUSECURSOR_ACTION, MOUSECURSOR_NOWALK); + ai_EnterAssociateTargetMode(oPC, oAssociate); return; } } @@ -256,7 +141,7 @@ void ai_ActionAssociate(object oPC, object oTarget, location lLocation) { if(ai_ReactToTrap(oAssociate, oTarget, TRUE)) { - EnterTargetingMode(oPC, OBJECT_TYPE_ALL, MOUSECURSOR_ACTION, MOUSECURSOR_NOWALK); + ai_EnterAssociateTargetMode(oPC, oAssociate); return; } @@ -289,7 +174,7 @@ void ai_ActionAssociate(object oPC, object oTarget, location lLocation) if(GetTrapDetectedBy(oTarget, oAssociate)) ai_ReactToTrap(oAssociate, oTarget, TRUE); } } - EnterTargetingMode(oPC, OBJECT_TYPE_ALL, MOUSECURSOR_ACTION, MOUSECURSOR_NOWALK); + if(!bActionAll) ai_EnterAssociateTargetMode(oPC, oAssociate); } void ai_ActionAllAssociates(object oPC, object oTarget, location lLocation) { @@ -298,12 +183,12 @@ void ai_ActionAllAssociates(object oPC, object oTarget, location lLocation) for(nIndex = 1; nIndex <= AI_MAX_HENCHMAN; nIndex++) { oAssociate = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC, nIndex); - if(oAssociate != OBJECT_INVALID) AssignCommand(oAssociate, ai_ActionAssociate(oPC, oTarget, lLocation)); + if(oAssociate != OBJECT_INVALID) AssignCommand(oAssociate, ai_ActionAssociate(oPC, oTarget, lLocation, TRUE)); } for(nIndex = 2; nIndex < 6; nIndex++) { oAssociate = GetAssociate(nIndex, oPC); - if(oAssociate != OBJECT_INVALID) AssignCommand(oAssociate, ai_ActionAssociate(oPC, oTarget, lLocation)); + if(oAssociate != OBJECT_INVALID) AssignCommand(oAssociate, ai_ActionAssociate(oPC, oTarget, lLocation, TRUE)); } } void ai_SelectFollowTarget(object oPC, object oAssociate, object oTarget) @@ -317,6 +202,7 @@ void ai_SelectFollowTarget(object oPC, object oAssociate, object oTarget) { ai_SetAIMode(oAssociate, AI_MODE_FOLLOW, FALSE); DeleteLocalObject(oAssociate, AI_FOLLOW_TARGET); + ClearAllActions(FALSE, oAssociate); string sTarget; if(ai_GetIsCharacter(oAssociate)) { @@ -340,34 +226,6 @@ void ai_SelectFollowTarget(object oPC, object oAssociate, object oTarget) } aiSaveAssociateModesToDb(oPC, oAssociate); } -void ai_OriginalRemoveAllActionMode(object oPC) -{ - if(!ai_GetAIMode(oPC, AI_MODE_ACTION_GHOST)) return; - object oAssociate; - int nIndex; - for(nIndex = 1; nIndex <= AI_MAX_HENCHMAN; nIndex++) - { - oAssociate = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC, nIndex); - if(oAssociate != OBJECT_INVALID && - !ai_GetAIMode(oAssociate, AI_MODE_GHOST) && - GetLocalInt(oAssociate, sGhostModeVarname)) - { - ai_RemoveASpecificEffect(oAssociate, EFFECT_TYPE_CUTSCENEGHOST); - DeleteLocalInt(oAssociate, sGhostModeVarname); - } - } - for(nIndex = 2; nIndex < 6; nIndex++) - { - oAssociate = GetAssociate(nIndex, oPC); - if(oAssociate != OBJECT_INVALID && - !ai_GetAIMode(oAssociate, AI_MODE_GHOST) && - GetLocalInt(oAssociate, sGhostModeVarname)) - { - ai_RemoveASpecificEffect(oAssociate, EFFECT_TYPE_CUTSCENEGHOST); - DeleteLocalInt(oAssociate, sGhostModeVarname); - } - } -} void ai_RemoveAllActionMode(object oPC) { object oAssociate; @@ -634,21 +492,23 @@ void ai_SelectWidgetSpellTarget(object oPC, object oAssociate, string sElem) json jSpell = JsonArrayGet(jWidget, nIndex); int nSpell = JsonGetInt(JsonArrayGet(jSpell, 0)); int nClass = JsonGetInt(JsonArrayGet(jSpell, 1)); + SetLocalObject(oPC, AI_TARGET_ASSOCIATE, oAssociate); if(nClass == -1) // This is an Item. { object oItem = GetObjectByUUID(JsonGetString(JsonArrayGet(jSpell, 5))); int nBaseItemType = GetBaseItemType(oItem); + int nIprpSubType = JsonGetInt(JsonArrayGet(jSpell, 4)); + itemproperty ipProperty = GetFirstItemProperty(oItem); + while(GetIsItemPropertyValid(ipProperty)) + { + if(nIprpSubType == GetItemPropertySubType(ipProperty)) break; + ipProperty = GetNextItemProperty(oItem); + } if(Get2DAString("spells", "Range", nSpell) == "P" || // Self nBaseItemType == BASE_ITEM_ENCHANTED_POTION || - nBaseItemType == BASE_ITEM_POTIONS) + nBaseItemType == BASE_ITEM_POTIONS || + nIprpSubType == IP_CONST_CASTSPELL_UNIQUE_POWER_SELF_ONLY) { - int nIprpSubType = JsonGetInt(JsonArrayGet(jSpell, 4)); - itemproperty ipProperty = GetFirstItemProperty(oItem); - while(GetIsItemPropertyValid(ipProperty)) - { - if(nIprpSubType == GetItemPropertySubType(ipProperty)) break; - ipProperty = GetNextItemProperty(oItem); - } if(ai_GetIsInCombat(oAssociate)) AssignCommand(oAssociate, ai_ClearCreatureActions(TRUE)); AssignCommand(oAssociate, ActionUseItemOnObject(oItem, ipProperty, oAssociate)); DelayCommand(6.0, ai_UpdateAssociateWidget(oPC, oAssociate)); @@ -693,8 +553,7 @@ void ai_SelectWidgetSpellTarget(object oPC, object oAssociate, string sElem) EnterTargetingMode(oPC, OBJECT_TYPE_CREATURE, MOUSECURSOR_ATTACK, MOUSECURSOR_NOATTACK); } // Check feat and adjust if it is an action mode feat. - if(ai_SetActionMode(oAssociate, nFeat)) return; - AssignCommand(oAssociate, ActionUseFeat(nFeat, oAssociate, nSpell)); + if(!ai_SetActionMode(oAssociate, nFeat)) AssignCommand(oAssociate, ActionUseFeat(nFeat, oAssociate, nSpell)); DelayCommand(6.0, ai_UpdateAssociateWidget(oPC, oAssociate)); return; } @@ -702,7 +561,6 @@ void ai_SelectWidgetSpellTarget(object oPC, object oAssociate, string sElem) } else SetLocalString(oPC, AI_TARGET_MODE, "ASSOCIATE_CAST_SPELL"); } - SetLocalObject(oPC, AI_TARGET_ASSOCIATE, oAssociate); int nObjectType; string sTarget = Get2DAString("spells", "TargetType", nSpell); int nTarget = ai_HexStringToInt(sTarget); @@ -784,6 +642,7 @@ int ai_SetActionMode(object oAssociate, int nFeat) else if(nFeat == FEAT_EXPERTISE) nMode = ACTION_MODE_EXPERTISE; else if(nFeat == FEAT_IMPROVED_EXPERTISE) nMode = ACTION_MODE_IMPROVED_EXPERTISE; else if(nFeat == FEAT_DIRTY_FIGHTING) nMode = ACTION_MODE_DIRTY_FIGHTING; + else if(nFeat == FEAT_DWARVEN_DEFENDER_DEFENSIVE_STANCE) nMode = 12; // ACTION_MODE_DEFENSIVE_STANCE if(nMode) { SetActionMode(oAssociate, nMode, !GetActionMode(oAssociate, nMode)); diff --git a/_module/nss/0i_spells.nss b/_module/nss/0i_spells.nss index 3c064c9..0440d30 100644 --- a/_module/nss/0i_spells.nss +++ b/_module/nss/0i_spells.nss @@ -149,12 +149,12 @@ void ai_SetupAllyHealingTargets(object oCaster, object oPC); // Clears the casters buff targets. void ai_ClearBuffTargets(object oCaster, string sVariable); // Cycles through a casters spells casting all buffs via actions. -void ai_ActionCastMemorizedBuff(struct stSpell stSpell); +void ai_ActionCastMemorizedBuff(struct stSpell stSpell, float fDelay, int bInstantSpell); // Cycles through a casters spells casting all buffs via actions. -void ai_ActionCastKnownBuff(struct stSpell stSpell); +void ai_ActionCastKnownBuff(struct stSpell stSpell, float fDelay, int bInstantSpell); // Checks oCaster for buffing spells and casts them based on nTarget; -// These are cast as actions and will happen at the speed based on -// AI_HENCHMAN_BUFF_DELAY, but are still actions. +// These are cast as actions and will happen at the speed based on the delay set +// by the player. 6.0 seconds to 0.1 second. Default 0.1 second. // nTarget is 0-9 where 0 is all targets, 1 is oPC, 2 is the caster // 3 Familiar, 4 is Animal Companion, 5 is Summons, 6 is Dominated, and 7+ is henchman. // Targets must be defined in variable AI_ALLY_TARGET_* where * is 1 to #. @@ -163,6 +163,12 @@ void ai_CastBuffs(object oCaster, int nBuffType, int nTarget, object oPC); // Returns TRUE if oCaster cast spontaneous cure spell on oTarget. // This uses an action and must use AssignCommand or OBJECT_SELF is the caster! int ai_CastSpontaneousCure(object oCreature, object oTarget, object oPC); +// Returns TRUE if oCaster casts a memorized inflict spell on oTarget. +// This uses an action and must use AssignCommand or OBJECT_SELF is the caster! +int ai_CastMemorizedInflict(object oCreature, object oTarget, object oPC, int nClass); +// Returns TRUE if oCaster casts a known inflict spell on oTarget. +// This uses an action and must use AssignCommand or OBJECT_SELF is the caster! +int ai_CastKnownInflict(object oCreature, object oTarget, object oPC, int nClass); // Returns TRUE if oCaster casts a memorized cure spell on oTarget. // This uses an action and must use AssignCommand or OBJECT_SELF is the caster! int ai_CastMemorizedHealing(object oCreature, object oTarget, object oPC, int nClass); @@ -178,6 +184,8 @@ void ai_SpellConcentrationCheck(object oCaster); int ai_CastInMelee(object oCreature, int nSpell, int nInMelee); // Returns a float range for the caster to search for a target of an offensive spell. float ai_GetOffensiveSpellSearchRange(object oCreature, int nSpell); +// Returns TRUE if nSpell is an inflict spell and will not over heal for nDamage. +int ai_ShouldWeCastThisInflictSpell(int nSpell, int nDamage); // Returns TRUE if nSpell is a cure spell and will not over heal for nDamage. int ai_ShouldWeCastThisCureSpell(int nSpell, int nDamage); // Casts the spell on the current target for oAssociate. @@ -394,73 +402,198 @@ int ai_GetIsSpellBookRestrictedCaster(object oAssociate) } return FALSE; } +// This is used to set immunities on a creature not using the AI. +// Should only update every minute. +void ai_SetCreatureItemImmunities(object oCreature) +{ + // Create an Immunity in json so we can check item immunities quickly for non-AI creatures. + SetLocalInt(oCreature, sIPTimeStampVarname, ai_GetCurrentTimeStamp()); + if(AI_DEBUG) ai_Debug("0i_spells", "402", "Checking for Item immunities on " + GetName(oCreature)); + int nSpellImmunity, bHasItemImmunity, nSlot; + json jImmunity = JsonArray(); + DeleteLocalInt(oCreature, sIPImmuneVarname); + DeleteLocalInt(oCreature, sIPResistVarname); + DeleteLocalInt(oCreature, sIPReducedVarname); + int nIprpSubType, nSpell, nLevel, nIPType, nIndex; + itemproperty ipProp; + // Cycle through all the creatures equiped items. + object oItem = GetItemInSlot(nSlot, oCreature); + while(nSlot < 12) + { + if(oItem != OBJECT_INVALID) + { + if(AI_DEBUG) ai_Debug("0i_spells", "416", "Checking Item immunities on " + GetName(oItem)); + ipProp = GetFirstItemProperty(oItem); + // Check for immunities on items. + while(GetIsItemPropertyValid(ipProp)) + { + nIPType = GetItemPropertyType(ipProp); + if(AI_DEBUG) ai_Debug("0i_spells", "422", "ItempropertyType(53/20/23/22): " + IntToString(nIPType)); + if(nIPType == ITEM_PROPERTY_IMMUNITY_SPECIFIC_SPELL) + { + bHasItemImmunity = TRUE; + nSpellImmunity = GetItemPropertyCostTableValue(ipProp); + nSpellImmunity = StringToInt(Get2DAString("iprp_spellcost", "SpellIndex", nSpellImmunity)); + //if(AI_DEBUG) ai_Debug("0i_talents", "1950", "SpellImmunity to " + Get2DAString("spells", "Label", nSpellImmunity)); + jImmunity = JsonArrayInsert(jImmunity, JsonInt(nSpellImmunity)); + } + else if(nIPType == ITEM_PROPERTY_IMMUNITY_DAMAGE_TYPE) + { + int nBit, nIpSubType = GetItemPropertySubType(ipProp); + if(AI_DEBUG) ai_Debug("0i_talents", "434", "Immune DmgType: nIPSubType: " + IntToString(nIpSubType)); + if(nIpSubType == 0) nBit = DAMAGE_TYPE_BLUDGEONING; + else if(nIpSubType == 1) nBit = DAMAGE_TYPE_PIERCING; + else if(nIpSubType == 2) nBit = DAMAGE_TYPE_SLASHING; + else if(nIpSubType == 5) nBit = DAMAGE_TYPE_MAGICAL; + else if(nIpSubType == 6) nBit = DAMAGE_TYPE_ACID; + else if(nIpSubType == 7) nBit = DAMAGE_TYPE_COLD; + else if(nIpSubType == 8) nBit = DAMAGE_TYPE_DIVINE; + else if(nIpSubType == 9) nBit = DAMAGE_TYPE_ELECTRICAL; + else if(nIpSubType == 10) nBit = DAMAGE_TYPE_FIRE; + else if(nIpSubType == 11) nBit = DAMAGE_TYPE_NEGATIVE; + else if(nIpSubType == 12) nBit = DAMAGE_TYPE_POSITIVE; + else if(nIpSubType == 13) nBit = DAMAGE_TYPE_SONIC; + if(nBit > 0) ai_SetItemProperty(oCreature, sIPImmuneVarname, nBit, TRUE); + } + else if(nIPType == ITEM_PROPERTY_DAMAGE_RESISTANCE) + { + int nBit, nIpSubType = GetItemPropertySubType(ipProp); + if(AI_DEBUG) ai_Debug("0i_talents", "452", "Dmg Resist: nIPSubType: " + IntToString(nIpSubType)); + if(nIpSubType == 0) nBit = DAMAGE_TYPE_BLUDGEONING; + else if(nIpSubType == 1) nBit = DAMAGE_TYPE_PIERCING; + else if(nIpSubType == 2) nBit = DAMAGE_TYPE_SLASHING; + else if(nIpSubType == 5) nBit = DAMAGE_TYPE_MAGICAL; + else if(nIpSubType == 6) nBit = DAMAGE_TYPE_ACID; + else if(nIpSubType == 7) nBit = DAMAGE_TYPE_COLD; + else if(nIpSubType == 8) nBit = DAMAGE_TYPE_DIVINE; + else if(nIpSubType == 9) nBit = DAMAGE_TYPE_ELECTRICAL; + else if(nIpSubType == 10) nBit = DAMAGE_TYPE_FIRE; + else if(nIpSubType == 11) nBit = DAMAGE_TYPE_NEGATIVE; + else if(nIpSubType == 12) nBit = DAMAGE_TYPE_POSITIVE; + else if(nIpSubType == 13) nBit = DAMAGE_TYPE_SONIC; + if(nBit > 0) ai_SetItemProperty(oCreature, sIPResistVarname, nBit, TRUE); + } + else if(nIPType == ITEM_PROPERTY_DAMAGE_REDUCTION) + { + int nIpSubType = GetItemPropertySubType(ipProp); + if(AI_DEBUG) ai_Debug("0i_talents", "470", "Dmg Reduction: nIPSubType: " + IntToString(nIpSubType)); + SetLocalInt(oCreature, sIPReducedVarname, nIpSubType); + } + nIndex++; + ipProp = GetNextItemProperty(oItem); + } + // If nSpellImmunity has been set then we need to save our Immunity json. + if(bHasItemImmunity) SetLocalJson(oCreature, AI_TALENT_IMMUNITY, jImmunity); + } + oItem = GetItemInSlot(++nSlot, oCreature); + // Make the final check the creatures hide. + if(nSlot == 11) oItem = GetItemInSlot(INVENTORY_SLOT_CARMOUR, oCreature); + } +} int ai_CreatureImmuneToEffect(object oCaster, object oCreature, int nSpell) { + // This checks for creatures not using the AI system (usually players). + // Creatures using the AI system will always have a value in sIPReducedVarname! + // Updates thier immunity values every minute. Should be good as we only update + // equiped items. Spell effects are checked on the creature and are not saved. + if(AI_DEBUG) + { + if(GetLocalInt(oCreature, sIPReducedVarname) == 0) ai_Debug("0i_spells", "492", + " Immunities last saved: " + IntToString(GetLocalInt(oCreature, sIPTimeStampVarname)) + + " + 60 < " + IntToString(ai_GetCurrentTimeStamp())); + } + if(GetLocalInt(oCreature, sIPReducedVarname) == 0 && + GetLocalInt(oCreature, sIPTimeStampVarname) + 60 < ai_GetCurrentTimeStamp()) ai_SetCreatureItemImmunities(oCreature); string sIType = Get2DAString("ai_spells", "ImmunityType", nSpell); + // Let us check if the creature is disabled while we look for immunities. + int nDisabled = ai_Disabled(oCreature); + if(AI_DEBUG) ai_Debug("0i_spells", "499", "Checking spell immunity type(" + sIType + ")."); if(sIType != "") { - if(AI_DEBUG) ai_Debug("0i_spells", "290", "Checking spell immunity type(" + sIType + ")."); if(sIType == "Death" && GetIsImmune(oCreature, IMMUNITY_TYPE_DEATH)) return TRUE; else if(sIType == "Level_Drain" && GetIsImmune(oCreature, IMMUNITY_TYPE_NEGATIVE_LEVEL)) return TRUE; else if(sIType == "Ability_Drain" && GetIsImmune(oCreature, IMMUNITY_TYPE_ABILITY_DECREASE)) return TRUE; else if(sIType == "Poison" && GetIsImmune(oCreature, IMMUNITY_TYPE_POISON)) return TRUE; else if(sIType == "Disease" && GetIsImmune(oCreature, IMMUNITY_TYPE_DISEASE)) return TRUE; else if(sIType == "Curse" && GetIsImmune(oCreature, IMMUNITY_TYPE_CURSED)) return TRUE; - else if(sIType == "Mind_Affecting" && GetIsImmune(oCreature, IMMUNITY_TYPE_MIND_SPELLS)) return TRUE; - else if(sIType == "Petrification" && ai_IsImmuneToPetrification(oCaster, oCreature)) return TRUE; + else if(sIType == "Mind_Affecting" && + (GetIsImmune(oCreature, IMMUNITY_TYPE_MIND_SPELLS) || nDisabled)) return TRUE; + else if(sIType == "Petrification" && + (ai_IsImmuneToPetrification(oCaster, oCreature) && nDisabled)) return TRUE; else if(sIType == "Fear" && (GetIsImmune(oCreature, IMMUNITY_TYPE_FEAR) || - GetIsImmune(oCreature, IMMUNITY_TYPE_MIND_SPELLS))) return TRUE; + GetIsImmune(oCreature, IMMUNITY_TYPE_MIND_SPELLS) || nDisabled)) return TRUE; else if(sIType == "Sleep" && (GetIsImmune(oCreature, IMMUNITY_TYPE_SLEEP) || - GetIsImmune(oCreature, IMMUNITY_TYPE_MIND_SPELLS))) return TRUE; + GetIsImmune(oCreature, IMMUNITY_TYPE_MIND_SPELLS) || nDisabled)) return TRUE; else if(sIType == "Paralysis" && (GetIsImmune(oCreature, IMMUNITY_TYPE_PARALYSIS) || - GetIsImmune(oCreature, IMMUNITY_TYPE_MIND_SPELLS))) return TRUE; + GetIsImmune(oCreature, IMMUNITY_TYPE_MIND_SPELLS) || nDisabled)) return TRUE; else if(sIType == "Domination" && (GetIsImmune(oCreature, IMMUNITY_TYPE_DOMINATE) || - GetIsImmune(oCreature, IMMUNITY_TYPE_MIND_SPELLS))) return TRUE; + GetIsImmune(oCreature, IMMUNITY_TYPE_MIND_SPELLS) || nDisabled)) return TRUE; else if(sIType == "Confusion" && (GetIsImmune(oCreature, IMMUNITY_TYPE_CONFUSED) || - GetIsImmune(oCreature, IMMUNITY_TYPE_MIND_SPELLS))) return TRUE; + GetIsImmune(oCreature, IMMUNITY_TYPE_MIND_SPELLS) || nDisabled)) return TRUE; else if(sIType == "Blindness" && (GetIsImmune(oCreature, IMMUNITY_TYPE_BLINDNESS) || - GetIsImmune(oCreature, IMMUNITY_TYPE_MIND_SPELLS))) return TRUE; + GetIsImmune(oCreature, IMMUNITY_TYPE_MIND_SPELLS) || ai_GetHasEffectType(oCreature, EFFECT_TYPE_BLINDNESS))) return TRUE; else if(sIType == "Dazed" && (GetIsImmune(oCreature, IMMUNITY_TYPE_DAZED) || - GetIsImmune(oCreature, IMMUNITY_TYPE_MIND_SPELLS))) return TRUE; + GetIsImmune(oCreature, IMMUNITY_TYPE_MIND_SPELLS) || nDisabled)) return TRUE; else if(sIType == "Charm" && (GetIsImmune(oCreature, IMMUNITY_TYPE_CHARM) || - GetIsImmune(oCreature, IMMUNITY_TYPE_MIND_SPELLS))) return TRUE; + GetIsImmune(oCreature, IMMUNITY_TYPE_MIND_SPELLS) || nDisabled)) return TRUE; // Check for damage immunities. // Negative damage does not work on undead! else if(sIType == "Negative" && GetRacialType(oCreature) == RACIAL_TYPE_UNDEAD) { - if(AI_DEBUG) ai_Debug("0i_spell", "325", "Undead are immune to Negative energy!"); + if(AI_DEBUG) ai_Debug("0i_spell", "538", "Undead are immune to Negative energy!"); return TRUE; } + else if(sIType == "Poison" && ai_GetHasEffectType(oCreature, EFFECT_TYPE_POISON)) return TRUE; + else if(sIType == "Disease" && ai_GetHasEffectType(oCreature, EFFECT_TYPE_DISEASE)) return TRUE; // Elemental damage resistances should be checked. if(sIType == "Acid" || sIType == "Cold" || sIType == "Fire" || sIType == "Electricty" || sIType == "Sonic") { if(ai_GetHasEffectType(oCreature, EFFECT_TYPE_DAMAGE_RESISTANCE)) { - if(AI_DEBUG) ai_Debug("0i_spell", "334", GetName(oCreature) + " has damage resistance to my " + sIType + " spell!"); + if(AI_DEBUG) ai_Debug("0i_spell", "547", GetName(oCreature) + " has damage resistance to my " + sIType + " spell!"); return TRUE; } // Check for resistances and immunities. Treat resistance as immune. int nIPResist = GetLocalInt(oCreature, sIPResistVarname); - if(AI_DEBUG) ai_Debug("0i_spell", "372", "nIPResist:" + IntToString(nIPResist)); + if(AI_DEBUG) ai_Debug("0i_spell", "552", "nIPResist:" + IntToString(nIPResist)); int nIPImmune = GetLocalInt(oCreature, sIPImmuneVarname) | nIPResist; - if(AI_DEBUG) ai_Debug("0i_spell", "374", "nIPImmune:" + IntToString(nIPImmune)); - if(nIPImmune > 0) + if(AI_DEBUG) ai_Debug("0i_spell", "554", "nIPImmune:" + IntToString(nIPImmune)); + int bImmune; + if(nIPImmune > 0) { + + if(sIType == "Acid" && (nIPImmune & DAMAGE_TYPE_ACID)) bImmune = TRUE; + else if(sIType == "Cold" && (nIPImmune & DAMAGE_TYPE_COLD)) bImmune = TRUE; + else if(sIType == "Fire" && (nIPImmune & DAMAGE_TYPE_FIRE)) bImmune = TRUE; + else if(sIType == "Electricity" && (nIPImmune & DAMAGE_TYPE_ELECTRICAL)) bImmune = TRUE; + else if(sIType == "Sonic" && (nIPImmune & DAMAGE_TYPE_SONIC)) bImmune = TRUE; + } + if(bImmune) { - if(AI_DEBUG) ai_Debug("0i_spell", "391", GetName(oCreature) + " is immune/resistant to my " + sIType + " spell through an item!"); - if(sIType == "Acid" && (nIPImmune & DAMAGE_TYPE_ACID)) return TRUE; - else if(sIType == "Cold" && (nIPImmune & DAMAGE_TYPE_COLD)) return TRUE; - else if(sIType == "Fire" && (nIPImmune & DAMAGE_TYPE_FIRE)) return TRUE; - else if(sIType == "Electricity" && (nIPImmune & DAMAGE_TYPE_ELECTRICAL)) return TRUE; - else if(sIType == "Sonic" && (nIPImmune & DAMAGE_TYPE_SONIC)) return TRUE; + if(AI_DEBUG) ai_Debug("0i_spell", "567", GetName(oCreature) + " is immune/resistant to my " + sIType + " spell through an item!"); + return TRUE; + } + } + // Lets also check undead and constructs vs mind spells. + int nRace = GetRacialType(oCreature); + int nClass = GetClassByPosition(1, oCreature); + if(nRace == RACIAL_TYPE_UNDEAD || nRace == RACIAL_TYPE_CONSTRUCT || + nClass == CLASS_TYPE_UNDEAD || nClass == CLASS_TYPE_CONSTRUCT) + { + if(sIType == "Mind_Affecting" || sIType == "Fear" || sIType == "Sleep" || + sIType == "Confusion" || sIType == "Blindness" || sIType == "Daze" || + sIType == "Poison" || sIType == "Disease" || sIType == "Charm") + { + if(AI_DEBUG) ai_Debug("0i_spell", "595", GetName(oCreature) + " is immune/resistant to my " + sIType + " spell because they are Undead or a Construct!"); + return TRUE; } } } @@ -479,12 +612,12 @@ int ai_CreatureImmuneToEffect(object oCaster, object oCreature, int nSpell) { if(nSpell == JsonGetInt(jSpell)) { - if(AI_DEBUG) ai_Debug("0i_spells", "407", GetName(oCreature) + " is immune to the spell via an Item!"); + if(AI_DEBUG) ai_Debug("0i_spells", "581", GetName(oCreature) + " is immune to the spell via an Item!"); return TRUE; } jSpell = JsonArrayGet(jSpellImmunity, ++nIndex); } - if(AI_DEBUG) ai_Debug("0i_spell", "347", GetName(oCreature) + " is not immune to the spell."); + if(AI_DEBUG) ai_Debug("0i_spell", "586", GetName(oCreature) + " is not immune to the spell."); return FALSE; } float ai_GetSpellRange(int nSpell) @@ -651,9 +784,9 @@ int ai_IsSilenced(object oCreature, int nSpell) } int ai_ArcaneSpellFailureTooHigh(object oCreature, int nClass, int nLevel, int nSlot) { - if(AI_DEBUG) ai_Debug("0i_spells", "561", "Arcane Spells: " + Get2DAString("classes", "ASF", nClass) + + if(AI_DEBUG) ai_Debug("0i_spells", "746", "Arcane Spells: " + Get2DAString("classes", "ASF", nClass) + " Arcane Spell Failure: " + IntToString(GetArcaneSpellFailure(oCreature)) + - " AI_ASF_WILL_USE: " + IntToString(AI_ASF_WILL_USE)); + " > " + IntToString(AI_ASF_WILL_USE) + " skip."); if(Get2DAString("classes", "ASF", nClass) == "1" && GetArcaneSpellFailure(oCreature) > AI_ASF_WILL_USE) { @@ -1181,7 +1314,7 @@ int ai_CheckAndCastSpell(object oCaster, int nSpell, int nSpellGroup, float fDel // Search all memorized spells for the spell. if(Get2DAString("classes", "MemorizesSpells", nClass) == "1") { - // Check each level starting with the highest to lowest. + // Check each level starting with the lowest to the highest. nSpellLevel = 0; while(nSpellLevel < 10) { @@ -1193,6 +1326,8 @@ int ai_CheckAndCastSpell(object oCaster, int nSpell, int nSpellGroup, float fDel if(GetMemorizedSpellReady(oCaster, nClass, nSpellLevel, nSpellSlot)) { nMemorizedSpell = GetMemorizedSpellId(oCaster, nClass, nSpellLevel, nSpellSlot); + if(AI_DEBUG) ai_Debug("0i_spells", "1326", "nMemorizedSpell: " + IntToString(nMemorizedSpell) + + " nSpell: " + IntToString(nSpell)); if(nMemorizedSpell == nSpell) { ai_CastMemorizedSpell(oCaster, nClass, nSpellLevel, nSpellSlot, oTarget, FALSE, oPC); @@ -1431,7 +1566,7 @@ void ai_CheckForPerDayItems(object oCreature, object oPC, int nBuffType) nCntr++; } } -void ai_CheckForBuffSpells(struct stSpell stSpell) +void ai_CheckForBuffSpells(struct stSpell stSpell, float fDelay, int bInstantSpell) { ai_SetupAllyTargets(stSpell.oCaster, stSpell.oPC); stSpell.nPosition = 1; @@ -1452,13 +1587,13 @@ void ai_CheckForBuffSpells(struct stSpell stSpell) if(Get2DAString("classes", "MemorizesSpells", stSpell.nClass) == "1") { stSpell.nMaxSlots = GetMemorizedSpellCountByLevel(stSpell.oCaster, stSpell.nClass, stSpell.nLevel); - AssignCommand(stSpell.oCaster, ai_ActionCastMemorizedBuff(stSpell)); + AssignCommand(stSpell.oCaster, ai_ActionCastMemorizedBuff(stSpell, fDelay, bInstantSpell)); return; } else { stSpell.nMaxSlots = GetKnownSpellCount(stSpell.oCaster, stSpell.nClass, stSpell.nLevel); - AssignCommand(stSpell.oCaster, ai_ActionCastKnownBuff(stSpell)); + AssignCommand(stSpell.oCaster, ai_ActionCastKnownBuff(stSpell, fDelay, bInstantSpell)); return; } } @@ -1466,7 +1601,7 @@ void ai_CheckForBuffSpells(struct stSpell stSpell) } ai_CheckForPerDayItems(stSpell.oCaster, stSpell.oPC, stSpell.nBuffType); } -void ai_ActionCastMemorizedSummons(struct stSpell stSpell) +void ai_ActionCastMemorizedSummons(struct stSpell stSpell, float fDelay, int bInstantSpell) { if(AI_DEBUG) ai_Debug("0i_spells", "1122", "Start of ActionCastMemorizedSummons!"); int nSpell; @@ -1492,14 +1627,14 @@ void ai_ActionCastMemorizedSummons(struct stSpell stSpell) if(Get2DAString("ai_spells", "Category", nSpell) == "S") { SetLocalInt(stSpell.oCaster, "AI_USED_SPELL_GROUP_-2", TRUE); - ai_CastMemorizedSpell(stSpell.oCaster, stSpell.nClass, stSpell.nLevel, stSpell.nSlot, stSpell.oCaster, TRUE, stSpell.oPC); + ai_CastMemorizedSpell(stSpell.oCaster, stSpell.nClass, stSpell.nLevel, stSpell.nSlot, stSpell.oCaster, bInstantSpell, stSpell.oPC); stSpell.nPosition = 1; stSpell.nClass = GetClassByPosition(stSpell.nPosition, stSpell.oCaster); stSpell.nLevel = (GetLevelByPosition(stSpell.nPosition, stSpell.oCaster) + 1) / 2; stSpell.nMaxSlots = GetMemorizedSpellCountByLevel(stSpell.oCaster, stSpell.nClass, stSpell.nLevel); stSpell.nSlot = 0; DelayCommand(2.0, ai_SetupAllyTargets(stSpell.oCaster, stSpell.oPC)); - DelayCommand(2.0 + 0.5, AssignCommand(stSpell.oCaster, ai_ActionCastMemorizedBuff(stSpell))); + DelayCommand(2.0 + 0.5, AssignCommand(stSpell.oCaster, ai_ActionCastMemorizedBuff(stSpell, fDelay, bInstantSpell))); return; } } @@ -1529,14 +1664,14 @@ void ai_ActionCastMemorizedSummons(struct stSpell stSpell) else { stSpell.nMaxSlots = GetKnownSpellCount(stSpell.oCaster, stSpell.nClass, stSpell.nLevel); - AssignCommand(stSpell.oCaster, ai_ActionCastKnownBuff(stSpell)); + AssignCommand(stSpell.oCaster, ai_ActionCastKnownBuff(stSpell, fDelay, bInstantSpell)); return; } } } - ai_CheckForBuffSpells(stSpell); + ai_CheckForBuffSpells(stSpell, fDelay, bInstantSpell); } -void ai_ActionCastKnownSummons(struct stSpell stSpell) +void ai_ActionCastKnownSummons(struct stSpell stSpell, float fDelay, int bInstantSpell) { //ai_Debug("0i_spells", "1184", "Start of ActionCastKnownSummons!"); int nSpell; @@ -1564,14 +1699,14 @@ void ai_ActionCastKnownSummons(struct stSpell stSpell) { SetLocalInt(stSpell.oCaster, "AI_USED_SPELL_GROUP_S", TRUE); //ai_Debug("0i_spells", "1209", "nSpell: " + IntToString(nSpell)); - ai_CastKnownSpell(stSpell.oCaster, stSpell.nClass, nSpell, stSpell.oCaster, TRUE, stSpell.oPC); + ai_CastKnownSpell(stSpell.oCaster, stSpell.nClass, nSpell, stSpell.oCaster, bInstantSpell, stSpell.oPC); stSpell.nPosition = 1; stSpell.nClass = GetClassByPosition(stSpell.nPosition, stSpell.oCaster); stSpell.nLevel = (GetLevelByPosition(stSpell.nPosition, stSpell.oCaster) + 1) / 2; - stSpell.nMaxSlots = GetMemorizedSpellCountByLevel(stSpell.oCaster, stSpell.nClass, stSpell.nLevel); + stSpell.nMaxSlots = GetKnownSpellCount(stSpell.oCaster, stSpell.nClass, stSpell.nLevel); stSpell.nSlot = 0; ai_SetupAllyTargets(stSpell.oCaster, stSpell.oPC); - DelayCommand(AI_HENCHMAN_BUFF_DELAY, AssignCommand(stSpell.oCaster, ai_ActionCastKnownBuff(stSpell))); + DelayCommand(fDelay, AssignCommand(stSpell.oCaster, ai_ActionCastKnownBuff(stSpell, fDelay, bInstantSpell))); return; } } @@ -1598,15 +1733,15 @@ void ai_ActionCastKnownSummons(struct stSpell stSpell) if(Get2DAString("classes", "MemorizesSpells", stSpell.nClass) == "1") { stSpell.nMaxSlots = GetMemorizedSpellCountByLevel(stSpell.oCaster, stSpell.nClass, stSpell.nLevel); - AssignCommand(stSpell.oCaster, ai_ActionCastMemorizedBuff(stSpell)); + AssignCommand(stSpell.oCaster, ai_ActionCastMemorizedBuff(stSpell, fDelay, bInstantSpell)); return; } else stSpell.nMaxSlots = GetKnownSpellCount(stSpell.oCaster, stSpell.nClass, stSpell.nLevel); } } - ai_CheckForBuffSpells(stSpell); + ai_CheckForBuffSpells(stSpell, fDelay, bInstantSpell); } -void ai_ActionCastMemorizedBuff(struct stSpell stSpell) +void ai_ActionCastMemorizedBuff(struct stSpell stSpell, float fDelay, int bInstantSpell) { int nSpell; string sBuffGroup, sBuffTarget; @@ -1649,9 +1784,9 @@ void ai_ActionCastMemorizedBuff(struct stSpell stSpell) " oTarget: " + GetName(oTarget)); if(oTarget != OBJECT_INVALID) { - ai_CastMemorizedSpell(stSpell.oCaster, stSpell.nClass, stSpell.nLevel, stSpell.nSlot, oTarget, TRUE, stSpell.oPC); + ai_CastMemorizedSpell(stSpell.oCaster, stSpell.nClass, stSpell.nLevel, stSpell.nSlot, oTarget, bInstantSpell, stSpell.oPC); stSpell.nSlot++; - DelayCommand(AI_HENCHMAN_BUFF_DELAY, AssignCommand(stSpell.oCaster, ai_ActionCastMemorizedBuff(stSpell))); + DelayCommand(fDelay, AssignCommand(stSpell.oCaster, ai_ActionCastMemorizedBuff(stSpell, fDelay, bInstantSpell))); return; } } @@ -1682,14 +1817,14 @@ void ai_ActionCastMemorizedBuff(struct stSpell stSpell) else { stSpell.nMaxSlots = GetKnownSpellCount(stSpell.oCaster, stSpell.nClass, stSpell.nLevel); - AssignCommand(stSpell.oCaster, ai_ActionCastKnownBuff(stSpell)); + AssignCommand(stSpell.oCaster, ai_ActionCastKnownBuff(stSpell, fDelay, bInstantSpell)); return; } } } ai_CheckForPerDayItems(stSpell.oCaster, stSpell.oPC, stSpell.nBuffType); } -void ai_ActionCastKnownBuff(struct stSpell stSpell) +void ai_ActionCastKnownBuff(struct stSpell stSpell, float fDelay, int bInstantSpell) { int nSpell; string sBuffGroup, sBuffTarget; @@ -1734,9 +1869,9 @@ void ai_ActionCastKnownBuff(struct stSpell stSpell) // " oTarget: " + GetName(oTarget)); if(oTarget != OBJECT_INVALID) { - ai_CastKnownSpell(stSpell.oCaster, stSpell.nClass, nSpell, oTarget, TRUE, stSpell.oPC); + ai_CastKnownSpell(stSpell.oCaster, stSpell.nClass, nSpell, oTarget, bInstantSpell, stSpell.oPC); stSpell.nSlot++; - DelayCommand(AI_HENCHMAN_BUFF_DELAY, AssignCommand(stSpell.oCaster, ai_ActionCastKnownBuff(stSpell))); + DelayCommand(fDelay, AssignCommand(stSpell.oCaster, ai_ActionCastKnownBuff(stSpell, fDelay, bInstantSpell))); return; } } @@ -1764,7 +1899,7 @@ void ai_ActionCastKnownBuff(struct stSpell stSpell) if(Get2DAString("classes", "MemorizesSpells", stSpell.nClass) == "1") { stSpell.nMaxSlots = GetMemorizedSpellCountByLevel(stSpell.oCaster, stSpell.nClass, stSpell.nLevel); - AssignCommand(stSpell.oCaster, ai_ActionCastMemorizedBuff(stSpell)); + AssignCommand(stSpell.oCaster, ai_ActionCastMemorizedBuff(stSpell, fDelay, bInstantSpell)); return; } else stSpell.nMaxSlots = GetKnownSpellCount(stSpell.oCaster, stSpell.nClass, stSpell.nLevel); @@ -1786,8 +1921,12 @@ void ai_CastBuffs(object oCaster, int nBuffType, int nTarget, object oPC) stSpell.nBuffType = nBuffType; stSpell.nTarget = nTarget; stSpell.nPosition = 1; + float fDelay = GetLocalFloat(stSpell.oCaster, AI_DELAY_BUFF_CASTING); + int bInstantSpell; + if(fDelay < 4.9) bInstantSpell = TRUE; + else fDelay = 6.0; // Look for summons spells on All, Long durations and the whole party. - if((nBuffType == 1 || nBuffType == 3) && nTarget == 0) + if((nBuffType == 1 || nBuffType == 3) && nTarget == 0 && GetAssociate(ASSOCIATE_TYPE_SUMMONED, oCaster) == OBJECT_INVALID) { while(stSpell.nPosition <= AI_MAX_CLASSES_PER_CHARACTER) { @@ -1802,13 +1941,13 @@ void ai_CastBuffs(object oCaster, int nBuffType, int nTarget, object oPC) if(Get2DAString("classes", "MemorizesSpells", stSpell.nClass) == "1") { stSpell.nMaxSlots = GetMemorizedSpellCountByLevel(stSpell.oCaster, stSpell.nClass, stSpell.nLevel); - AssignCommand(stSpell.oCaster, ai_ActionCastMemorizedSummons(stSpell)); + AssignCommand(stSpell.oCaster, ai_ActionCastMemorizedSummons(stSpell, fDelay, bInstantSpell)); return; } else { stSpell.nMaxSlots = GetKnownSpellCount(stSpell.oCaster, stSpell.nClass, stSpell.nLevel); - AssignCommand(stSpell.oCaster, ai_ActionCastKnownSummons(stSpell)); + AssignCommand(stSpell.oCaster, ai_ActionCastKnownSummons(stSpell, fDelay, bInstantSpell)); return; } } @@ -1817,7 +1956,7 @@ void ai_CastBuffs(object oCaster, int nBuffType, int nTarget, object oPC) // Exit here; if we summoned a monster then it linked off of that spell // cast to continue the action queue for all buff spell cast actions. } - ai_CheckForBuffSpells(stSpell); + ai_CheckForBuffSpells(stSpell, fDelay, bInstantSpell); } int ai_CastSpontaneousCure(object oCreature, object oTarget, object oPC) { @@ -1883,6 +2022,98 @@ int ai_CastSpontaneousCure(object oCreature, object oTarget, object oPC) } return FALSE; } +int ai_CastMemorizedInflict(object oCreature, object oTarget, object oPC, int nClass) +{ + if(AI_DEBUG) ai_Debug("0i_spells", "1993", GetName(oCreature) + " is looking to cast a memorized inflict spell."); + int nDamage = GetMaxHitPoints(oTarget) - GetCurrentHitPoints(oTarget); + int nSpell, nSlot, nMaxSlots, nLevel = 9; + int nClassSave, nSlotSave, nLevelSave = 10; + while(nLevel > -1) + { + nMaxSlots = GetMemorizedSpellCountByLevel(oCreature, nClass, nLevel); + nSlot = 0; + if(AI_DEBUG) ai_Debug("0i_spells", "2001", "nLevel: " + IntToString(nLevel) + " nMaxSlots: " + IntToString(nMaxSlots)); + while(nSlot < nMaxSlots) + { + if(AI_DEBUG) ai_Debug("0i_spells", "2004", "nSlot: " + IntToString(nSlot) + + " Spell Ready: " + IntToString(GetMemorizedSpellReady(oCreature, nClass, nLevel, nSlot))); + if(GetMemorizedSpellReady(oCreature, nClass, nLevel, nSlot)) + { + nSpell = GetMemorizedSpellId(oCreature, nClass, nLevel, nSlot); + if(ai_ShouldWeCastThisInflictSpell(nSpell, nDamage)) + { + string sSpellName = GetStringByStrRef(StringToInt(Get2DAString("spells", "Name", nSpell))); + if(AI_DEBUG) ai_Debug("0i_spells", "2012", GetName(oCreature) + " has cast " + sSpellName + " on " + GetName(oTarget) + "."); + ai_CastMemorizedSpell(oCreature, nClass, nLevel, nSlot, oTarget, FALSE, oPC); + return TRUE; + } + // Save the lowest level inflict spell as we might need to cast it. + else if(nLevel < nLevelSave && (nSpell > 430 && nSpell < 436)) + { + nClassSave = nClass; + nLevelSave = nLevel; + nSlotSave = nSlot; + } + } + nSlot++; + } + nLevel--; + } + // Did we find a cure spell? If we did then use it. + if(nLevelSave < 10) + { + if(AI_DEBUG) ai_Debug("0i_spells", "1740", GetName(oCreature) + " has cast the lowest level cure spell on " + GetName(oTarget) + "."); + ai_CastMemorizedSpell(oCreature, nClassSave, nLevelSave, nSlotSave, oTarget, FALSE, oPC); + return TRUE; + } + return FALSE; +} +int ai_CastKnownInflict(object oCreature, object oTarget, object oPC, int nClass) +{ + if(AI_DEBUG) ai_Debug("0i_spells", "2041", GetName(oCreature) + " is looking to cast a known inflict spell."); + int nDamage = GetMaxHitPoints(oTarget) - GetCurrentHitPoints(oTarget); + int nSpell, nSlot, nMaxSlots, nLevel = 9; + int nClassSave, nSpellSave, nLevelSave = 10; + while(nLevel > -1) + { + nMaxSlots = GetKnownSpellCount(oCreature, nClass, nLevel); + nSlot = 0; + if(AI_DEBUG) ai_Debug("0i_spells", "2049", "nLevel: " + IntToString(nLevel) + " nMaxSlots: " + IntToString(nMaxSlots)); + while(nSlot < nMaxSlots) + { + nSpell = GetKnownSpellId(oCreature, nClass, nLevel, nSlot); + if(AI_DEBUG) ai_Debug("0i_spells", "2053", "nSlot: " + IntToString(nSlot) + + " Spell Ready: " + IntToString(GetSpellUsesLeft(oCreature, nClass, nSpell))); + if(GetSpellUsesLeft(oCreature, nClass, nSpell)) + { + if(ai_ShouldWeCastThisInflictSpell(nSpell, nDamage)) + { + string sSpellName = GetStringByStrRef(StringToInt(Get2DAString("spells", "Name", nSpell))); + if(AI_DEBUG) ai_Debug("0i_spells", "2060", GetName(oCreature) + " has cast " + sSpellName + " on " + GetName(oTarget) + "."); + ai_CastKnownSpell(oCreature, nClass, nSpell, oTarget, FALSE, oPC); + return TRUE; + } + // Save the lowest level cure spell as we might need to cast it. + else if(nLevel < nLevelSave && (nSpell > 430 && nSpell < 436)) + { + nClassSave = nClass; + nLevelSave = nLevel; + nSpellSave = nSpell; + } + } + nSlot++; + } + nLevel--; + } + return FALSE; + // Did we find a cure spell? If we did then use it. + if(nLevelSave < 10) + { + if(AI_DEBUG) ai_Debug("0i_spells", "1781", GetName(oCreature) + " has cast the lowest level cure spell on " + GetName(oTarget) + "."); + ai_CastKnownSpell(oCreature, nClassSave, nSpellSave, oTarget, FALSE, oPC); + return TRUE; + } +} int ai_CastMemorizedHealing(object oCreature, object oTarget, object oPC, int nClass) { if(AI_DEBUG) ai_Debug("0i_spells", "1702", GetName(oCreature) + " is looking to cast a memorized cure spell."); @@ -1909,7 +2140,7 @@ int ai_CastMemorizedHealing(object oCreature, object oTarget, object oPC, int nC return TRUE; } // Save the lowest level cure spell as we might need to cast it. - else if(nLevel < nLevelSave && (nSpell > 26 && nSpell < 32)) + else if(nLevel < nLevelSave && (nSpell > 30 && nSpell < 36)) { nClassSave = nClass; nLevelSave = nLevel; @@ -1955,7 +2186,7 @@ int ai_CastKnownHealing(object oCreature, object oTarget, object oPC, int nClass return TRUE; } // Save the lowest level cure spell as we might need to cast it. - else if(nLevel < nLevelSave && (nSpell > 26 && nSpell < 32)) + else if(nLevel < nLevelSave && (nSpell > 30 && nSpell < 36)) { nClassSave = nClass; nLevelSave = nLevel; @@ -2074,7 +2305,7 @@ float ai_GetOffensiveSpellSearchRange(object oCreature, int nSpell) // We check this because if the enemy is moving or has not started acting // then we don't want to move up on them as they might move towards us! int nAction = GetCurrentAction(oNearestEnemy); - if(AI_DEBUG) ai_Debug("0i_spells", "1130", GetName(oNearestEnemy) + " current action: " + IntToString(nAction)); + if(AI_DEBUG) ai_Debug("0i_spells", "2228", GetName(oNearestEnemy) + " current action: " + IntToString(nAction)); if(nAction != ACTION_MOVETOPOINT || nAction != ACTION_ITEMCASTSPELL || nAction != ACTION_INVALID || nAction != ACTION_USEOBJECT || nAction != ACTION_RANDOMWALK) fRange = fEnemyDistance + (fRange - 7.5); @@ -2083,6 +2314,18 @@ float ai_GetOffensiveSpellSearchRange(object oCreature, int nSpell) else if(fRange < 0.1f) return 0.1f; return fRange; } +int ai_ShouldWeCastThisInflictSpell(int nSpell, int nDamage) +{ + if(AI_DEBUG) ai_Debug("0i_spells", "2239", "nSpell: " + IntToString(nSpell) + " nDamage: " + + IntToString(nDamage)); + if(nSpell == SPELL_HEAL && nDamage > 50) return TRUE; + else if(nSpell == SPELL_INFLICT_CRITICAL_WOUNDS && nDamage > 31) return TRUE; + else if(nSpell == SPELL_INFLICT_SERIOUS_WOUNDS && nDamage > 23) return TRUE; + else if(nSpell == SPELL_INFLICT_MODERATE_WOUNDS && nDamage > 15) return TRUE; + else if(nSpell == SPELL_INFLICT_LIGHT_WOUNDS && nDamage > 6) return TRUE; + else if(nSpell == SPELL_INFLICT_MINOR_WOUNDS) return TRUE; + return FALSE; +} int ai_ShouldWeCastThisCureSpell(int nSpell, int nDamage) { if(AI_DEBUG) ai_Debug("0i_spells", "1127", "nSpell: " + IntToString(nSpell) + " nDamage: " + @@ -2112,7 +2355,7 @@ void ai_CastWidgetSpell(object oPC, object oAssociate, object oTarget, location // " oTarget: " + GetName(oTarget) + // " nMetaMagic: " + IntToString(nMetaMagic) + // " nDomain: " + IntToString(nDomain)); - if(GetCurrentAction(oAssociate) != ACTION_CASTSPELL) AssignCommand(oAssociate, ai_ClearCreatureActions(TRUE)); + if(GetCurrentAction(oAssociate) != ACTION_CASTSPELL) AssignCommand(oAssociate, ai_ClearCreatureActions(FALSE)); if(!GetIsObjectValid(oTarget)) { AssignCommand(oAssociate, ActionCastSpellAtLocation(nSpell, lLocation, nMetaMagic, FALSE, 0, FALSE, -1, FALSE, nDomain)); @@ -2134,7 +2377,7 @@ void ai_UseWidgetFeat(object oPC, object oAssociate, object oTarget, location lL // We use nLevel at -1 to denote this is a feat with a subradial spell. int nSubSpell; if(nLevel == -1) nSubSpell = JsonGetInt(JsonArrayGet(jFeat, 0)); - if(ai_GetIsInCombat(oAssociate)) AssignCommand(oAssociate, ai_ClearCreatureActions(TRUE)); + if(ai_GetIsInCombat(oAssociate)) AssignCommand(oAssociate, ai_ClearCreatureActions(FALSE)); //SendMessageToPC(oPC, "0i_spells, 2104, nFeat: " + IntToString(nFeat) + " oTarget: " + GetName(oTarget)); if(!GetIsObjectValid(oTarget)) { @@ -2155,7 +2398,7 @@ void ai_UseWidgetItem(object oPC, object oAssociate, object oTarget, location lL int nIprpSubType = JsonGetInt(JsonArrayGet(jItem, 4)); object oItem = GetObjectByUUID(JsonGetString(JsonArrayGet(jItem, 5))); itemproperty ipProperty; - if(ai_GetIsInCombat(oAssociate)) AssignCommand(oAssociate, ai_ClearCreatureActions(TRUE)); + if(ai_GetIsInCombat(oAssociate)) AssignCommand(oAssociate, ai_ClearCreatureActions(FALSE)); if(nSpell == SPELL_HEALINGKIT) { ipProperty = GetFirstItemProperty(oItem); @@ -2172,9 +2415,9 @@ void ai_UseWidgetItem(object oPC, object oAssociate, object oTarget, location lL if(nIprpSubType == GetItemPropertySubType(ipProperty)) break; ipProperty = GetNextItemProperty(oItem); } - if(!GetIsObjectValid(oTarget)) + if(GetIsObjectValid(oTarget)) { - AssignCommand(oAssociate, ActionUseItemAtLocation(oItem, ipProperty, lLocation)); + AssignCommand(oAssociate, ActionUseItemOnObject(oItem, ipProperty, oTarget)); } - else AssignCommand(oAssociate, ActionUseItemOnObject(oItem, ipProperty, oTarget)); + else AssignCommand(oAssociate, ActionUseItemAtLocation(oItem, ipProperty, lLocation)); } diff --git a/_module/nss/0i_states_cond.nss b/_module/nss/0i_states_cond.nss index 4c77ccf..b1a71d3 100644 --- a/_module/nss/0i_states_cond.nss +++ b/_module/nss/0i_states_cond.nss @@ -94,6 +94,7 @@ void ai_ClearCreatureActions(int bClearCombatState = FALSE) void ai_SetLastAction(object oCreature, int nAction = AI_LAST_ACTION_NONE) { SetLocalInt(oCreature, sLastActionVarname, nAction); + SetLocalInt(oCreature, sLastActionTimeVarname, ai_GetCurrentTimeStamp()); } int ai_CompareLastAction(object oCreature, int nAction) { @@ -105,6 +106,7 @@ int ai_CompareLastAction(object oCreature, int nAction) } void ai_SetListeningPatterns(object oCreature) { + SetListening(oCreature, TRUE); SetListenPattern(oCreature, AI_I_SEE_AN_ENEMY, AI_ALLY_SEES_AN_ENEMY); SetListenPattern(oCreature, AI_I_HEARD_AN_ENEMY, AI_ALLY_HEARD_AN_ENEMY); SetListenPattern(oCreature, AI_ATKED_BY_WEAPON, AI_ALLY_ATKED_BY_WEAPON); @@ -114,7 +116,6 @@ void ai_SetListeningPatterns(object oCreature) SetListenPattern(oCreature, AI_I_AM_DISEASED, AI_ALLY_IS_DISEASED); SetListenPattern(oCreature, AI_I_AM_POISONED, AI_ALLY_IS_POISONED); SetListenPattern(oCreature, AI_I_AM_WEAK, AI_ALLY_IS_WEAK); - SetListening(oCreature, TRUE); } int ai_IsNonliving(int nRacialType) { @@ -134,12 +135,12 @@ int ai_GetIsInCombat(object oCreature) } void ai_SetCombatRound(object oCreature) { - SetLocalInt(oCreature, "AI_COMBAT_ROUND_START", SQLite_GetTimeStamp()); - if(AI_DEBUG) ai_Debug("0i_states_cond", "116", " ===============> " + GetName(oCreature) + " ROUND START:" + IntToString(SQLite_GetTimeStamp()) + " <==============="); + SetLocalInt(oCreature, "AI_COMBAT_ROUND_START", ai_GetCurrentTimeStamp()); + if(AI_DEBUG) ai_Debug("0i_states_cond", "116", " ===============> " + GetName(oCreature) + " ROUND START:" + IntToString(ai_GetCurrentTimeStamp()) + " <==============="); } void ai_EndCombatRound(object oCreature) { - if(AI_DEBUG) ai_Debug("0i_states_cond", "120", " ===============> " + GetName(oCreature) + " ROUND END:" + IntToString(SQLite_GetTimeStamp()) + " <==============="); + if(AI_DEBUG) ai_Debug("0i_states_cond", "120", " ===============> " + GetName(oCreature) + " ROUND END:" + IntToString(ai_GetCurrentTimeStamp()) + " <==============="); DeleteLocalInt(oCreature, "AI_COMBAT_ROUND_START"); } int ai_IsInCombatRound(object oCreature, int nCombatRound = AI_COMBAT_ROUND_IN_SECONDS) @@ -148,10 +149,10 @@ int ai_IsInCombatRound(object oCreature, int nCombatRound = AI_COMBAT_ROUND_IN_S if(AI_DEBUG) ai_Debug("0i_states_cond", "148", " nCombatRoundStart: " + IntToString(nCombatRoundStart)); if(!nCombatRoundStart) return FALSE; // New combat round calculator. If 6 seconds has passed then we are on a new round! - int nSQLTime = SQLite_GetTimeStamp(); - int nCombatRoundTime = nSQLTime - nCombatRoundStart; - if(AI_DEBUG) ai_Debug("0i_states_cond", "153", " SQLite_GetTimeStamp: " + IntToString(nSQLTime) + - "(" + IntToString(nSQLTime - nCombatRoundStart) + ")"); + int nTime = ai_GetCurrentTimeStamp(); + int nCombatRoundTime = nTime - nCombatRoundStart; + if(AI_DEBUG) ai_Debug("0i_states_cond", "153", " nTime + (nTime - Round Start): " + IntToString(nTime) + + "(" + IntToString(nTime - nCombatRoundStart) + ")"); if(nCombatRoundTime < nCombatRound) return TRUE; ai_EndCombatRound(oCreature); return FALSE; @@ -200,9 +201,11 @@ int ai_Disabled(object oCreature) effect eEffect = GetFirstEffect(oCreature); while(GetIsEffectValid(eEffect)) { - switch(GetEffectType(eEffect)) + switch(GetEffectType(eEffect, TRUE)) { + WriteTimestampedLogEntry("Effect Type: " + IntToString(GetEffectType(eEffect, TRUE))); case EFFECT_TYPE_DOMINATED : + case EFFECT_TYPE_CUTSCENE_DOMINATED : { if(!GetCommandable(oCreature)) SetCommandable(TRUE, oCreature); return FALSE; @@ -213,6 +216,7 @@ int ai_Disabled(object oCreature) case EFFECT_TYPE_CONFUSED : case EFFECT_TYPE_FRIGHTENED : case EFFECT_TYPE_PARALYZE : + case EFFECT_TYPE_CUTSCENE_PARALYZE : case EFFECT_TYPE_TURNED : case EFFECT_TYPE_CHARMED : case EFFECT_TYPE_PETRIFY : diff --git a/_module/nss/0i_talents.nss b/_module/nss/0i_talents.nss index 6728abb..693003f 100644 --- a/_module/nss/0i_talents.nss +++ b/_module/nss/0i_talents.nss @@ -63,8 +63,16 @@ int ai_TryTailSweepAttack(object oCreature); int ai_TrySneakAttack(object oCreature, int nInMelee, int bAlwaysAtk = TRUE); // Returns TRUE if oCreature finds a good ranged target and uses Sneak Attack. int ai_TryRangedSneakAttack(object oCreature, int nInMelee); +// Returns TRUE if oCreature uses a harmful ranged talent. +int ai_TryRangedTalents(object oCreature, object oTarget, int nInMelee); // Returns TRUE if oCreature uses a harmful melee talent. int ai_TryMeleeTalents(object oCreature, object oTarget); +//:: [PRC8] Tests & runs Charge +int ai_TryCharging(object oCreature, object oTarget); +//:: [PRC8] Tests & runs Grapple +int ai_TryGrappling(object oCreature, object oTarget); +//:: [PRC8] Tests & runs Trip +int ai_TryTripping(object oCreature, object oTarget); // ***************************************************************************** // ******************************* Try * Skills ******************************** // ***************************************************************************** @@ -132,6 +140,9 @@ int ai_TryKiDamageFeat(object oCreature, object oTarget); // Returns TRUE if oCreature uses Knockdown. // This checks if they have the feat and if its viable. int ai_TryKnockdownFeat(object oCreature, object oTarget); +// Returns the spell level value to be used to compare if they should cast a +// spell vs use Polymorph. +int ai_GetHasPolymorphSelfFeat(object oCreature); // Returns TRUE if oCreature uses a polymorph self feat. // This checks if they have the feat and will use the best one. int ai_TryPolymorphSelfFeat(object oCreature); @@ -172,14 +183,25 @@ int ai_TryWhirlwindFeat(object oCreature); // Returns TRUE if oCreature uses Wholeness of Body. // This checks if they have any uses left, have the feat and if its viable. int ai_TryWholenessOfBodyFeat(object oCreature); +//:: [PRC8] Tests & runs Awesome Blow +int ai_TryAwesomeBlowFeat(object oCreature, object oTarget); +//:: [PRC8] Tests & runs Bullrush +int ai_TryBullrushFeat(object oCreature, object oTarget); +//:: [PRC8] Tests & runs Overrun +int ai_TryOverrunFeat(object oCreature, object oTarget); +//:: [PRC8] Tests & runs Ranged Disarm +int ai_TryRangedDisarmFeat(object oCreature, object oTarget); +//:: [PRC8] Tests & runs Swarm of Arrows +int ai_TrySwarmofArrowsFeat(object oCreature); +//:: [PRC8] Tests & runs Inlindl School Strike +int ai_TryInlindlSchoolFeat(object oCreature, object oTarget); // ***************************************************************************** // ***************************** TALENT SCRIPTS ****************************** // ***************************************************************************** // These functions do not fall into another section. // Returns the MaxLevel used in GetCreatureTalent for oCreature. -// This checks the intelligence and the level of oCreature. -// Returns either -1 (random) or 10 for all talents. +// This checks the level of oCreature. int ai_GetMonsterTalentMaxLevel(object oCreature); // Returns the nMaxLevel used in GetCreatureTalent for oCreature. // This checks the difficulty of the combat and the level of oCreature. @@ -197,12 +219,13 @@ int ai_GetHasTalent(object oCreature, int nTalent); // Type 4)item 0-type, 1-spell, 2-item object, 3-level, 4-slot. // jJsonLevel is the level to place the talent in the json array // maybe different then the talents actual level which is passed in nLevel. -void ai_SaveTalent(object oCreature, int nClass, int nJsonLevel, int nLevel, int nSlot, int nSpell, int nType, int bBuff, object oItem = OBJECT_INVALID); +void ai_SaveTalent(object oCreature, int nClass, int nJsonLevel, int nLevel, int nSlot, int nSpell, int nType, int bBuff, int bPreBuff, int bFullBuff, object oItem = OBJECT_INVALID); // Removes a talent nSlotIndex from jLevel in jCategory. void ai_RemoveTalent(object oCreature, json jCategory, json jLevel, string sCategory, int nLevel, int nSlotIndex); // Saves a creatures talents to variables upon them for combat use. // bMonster will check to see if they should be buffed when we set the talents. -void ai_SetCreatureTalents(object oCreature, int bMonster); +// bForceTalentSetup - Tells the talent system to force a talent setup but no Buffing. +void ai_SetCreatureTalents(object oCreature, int bMonster, int bForceTalentSetup = FALSE); // Return TRUE if oCreature spontaneously casts a cure spell from a talent in sCategory. int ai_UseSpontaneousCureTalentFromCategory(object oCreature, string sCategory, int nInMelee, int nDamage, object oTarget = OBJECT_INVALID); // Returns TRUE if oCreature uses jTalent on oTarget. @@ -217,7 +240,8 @@ int ai_UseCreatureTalent(object oCreature, string sCategory, int nInMelee, int n int ai_UseTalent(object oCreature, int nTalent, object oTarget); // Returns TRUE if jTalent is used on oTarget by oCaster. // Checks the talent type and casts the correct spell. For items it checks uses. -int ai_UseTalentOnObject(object oCaster, json jTalent, object oTarget, int nInMelee); +// bCheckPosition will see if we should move back due to spell failure in combat. +int ai_UseTalentOnObject(object oCaster, json jTalent, object oTarget, int nInMelee, int bCheckPosition = TRUE); // Returns TRUE if jTalent is used at lTarget location by oCaster. // Checks the talent type and cast the correct spell. For items it checks uses. int ai_UseTalentAtLocation(object oCaster, json jTalent, object oTarget, int nInMelee); @@ -259,41 +283,100 @@ int ai_TryHealingTalent(object oCreature, int nInMelee, object oTarget = OBJECT_ GetAssociateType(oTarget) > 1) return FALSE; int nHp = ai_GetPercHPLoss(oTarget); int nHpLimit = ai_GetHealersHpLimit(oCreature); - if(AI_DEBUG) ai_Debug("0i_talents", "256", "nHp: " + IntToString(nHp) + + if(AI_DEBUG) ai_Debug("0i_talents", "268", "nHp: " + IntToString(nHp) + "< nHpLimit: " + IntToString(nHpLimit)); if(nHp > nHpLimit) return FALSE; int nDamage = GetMaxHitPoints(oTarget) - GetCurrentHitPoints(oTarget); - if(AI_DEBUG) ai_Debug("0i_talents", "260", GetName(oTarget) + " has lost " + IntToString(nDamage) + " hitpoints!"); - // Do they have Lay on Hands? + if(AI_DEBUG) ai_Debug("0i_talents", "272", GetName(oTarget) + " has lost " + IntToString(nDamage) + " hitpoints!"); int bUseMagic = !ai_GetMagicMode(oCreature, AI_MAGIC_NO_MAGIC); - if(bUseMagic && GetHasFeat(FEAT_LAY_ON_HANDS, oCreature)) - { - int nCanHeal = GetAbilityModifier(ABILITY_CHARISMA, oCreature) * ai_GetCharacterLevels(oCreature); - if(nCanHeal <= nDamage) - { - ai_UseFeat(oCreature, FEAT_LAY_ON_HANDS, oTarget); - return TRUE; - } - } - int nMaxLevel = 9; // If they are about to die then throw caution to the wind and HEAL! if(nHp <= AI_HEALTH_BLOODY || nHp < 11) nInMelee = 0; - if(ai_UseCreatureTalent(oCreature, AI_TALENT_HEALING, nInMelee, nMaxLevel, oTarget)) return TRUE; - if(AI_DEBUG) ai_Debug("0i_talents", "275", GetName(oCreature) + " has no healing spells!" + - " Cleric lvls: " + IntToString(GetLevelByClass(CLASS_TYPE_CLERIC, oCreature)) + - " Sontaneous casting: " + IntToString(ai_GetMagicMode(oCreature, AI_MAGIC_NO_SPONTANEOUS_CURE))); - if(bUseMagic && GetLevelByClass(CLASS_TYPE_CLERIC, oCreature) && - !ai_GetMagicMode(oCreature, AI_MAGIC_NO_SPONTANEOUS_CURE)) + int nRace = GetRacialType(oTarget); + if(nRace == RACIAL_TYPE_UNDEAD) { - // We need to check our talents and see what spells we can convert. - if(ai_UseSpontaneousCureTalentFromCategory(oCreature, AI_TALENT_ENHANCEMENT, nInMelee, nDamage, oTarget)) return TRUE; - if(ai_UseSpontaneousCureTalentFromCategory(oCreature, AI_TALENT_PROTECTION, nInMelee, nDamage, oTarget)) return TRUE; - if(ai_UseSpontaneousCureTalentFromCategory(oCreature, AI_TALENT_DISCRIMINANT_AOE, nInMelee, nDamage, oTarget)) return TRUE; - if(ai_UseSpontaneousCureTalentFromCategory(oCreature, AI_TALENT_INDISCRIMINANT_AOE, nInMelee, nDamage, oTarget)) return TRUE; - if(ai_UseSpontaneousCureTalentFromCategory(oCreature, AI_TALENT_TOUCH, nInMelee, nDamage, oTarget)) return TRUE; - if(ai_UseSpontaneousCureTalentFromCategory(oCreature, AI_TALENT_RANGED, nInMelee, nDamage, oTarget)) return TRUE; - if(ai_UseSpontaneousCureTalentFromCategory(oCreature, AI_TALENT_SUMMON, nInMelee, nDamage, oTarget)) return TRUE; - if(ai_UseSpontaneousCureTalentFromCategory(oCreature, AI_TALENT_CURE, nInMelee, nDamage, oTarget)) return TRUE; + json jCategory = GetLocalJson(oCreature, AI_TALENT_TOUCH); + if(JsonGetType(jCategory) == JSON_TYPE_NULL) return FALSE; + int nLevel = 4, bFound, nSlotIndex, nMaxSlotIndex, nSpell; + json jLevel, jTalent; + // Loop through nLevels looking for nTalent + while(nLevel > 0) + { + // Get the array of nLevel. + jLevel = JsonArrayGet(jCategory, nLevel); + nMaxSlotIndex = JsonGetLength(jLevel); + if(nMaxSlotIndex > 0) + { + // Get the talent within nLevel cycling from the first to the last. + nSlotIndex = 0; + while (nSlotIndex < nMaxSlotIndex) + { + jTalent = JsonArrayGet(jLevel, nSlotIndex); + if(AI_DEBUG) ai_Debug("0i_talents", "296", "jTalent: " + JsonDump(jTalent, 4)); + nSpell = JsonGetInt(JsonArrayGet(jTalent, 1)); + if(nSpell == SPELL_INFLICT_CRITICAL_WOUNDS) + { + bFound = TRUE; + break; + } + else if(nSpell == SPELL_INFLICT_SERIOUS_WOUNDS) + { + bFound = TRUE; + break; + } + else if(nSpell == SPELL_INFLICT_MODERATE_WOUNDS) + { + bFound = TRUE; + break; + } + else if(nSpell == SPELL_INFLICT_LIGHT_WOUNDS) + { + bFound = TRUE; + break; + } + nSlotIndex++; + } + } + if(bFound) break; + nLevel--; + } + if(bFound) + { + if(ai_UseTalentOnObject(oCreature, jTalent, oTarget, nInMelee)) + { + ai_RemoveTalent(oCreature, jCategory, jLevel, AI_TALENT_TOUCH, nLevel, nSlotIndex); + return TRUE; + } + } + } + else + { + // Do they have Lay on Hands? + if(bUseMagic && GetHasFeat(FEAT_LAY_ON_HANDS, oCreature)) + { + int nCanHeal = GetAbilityModifier(ABILITY_CHARISMA, oCreature) * ai_GetCharacterLevels(oCreature); + if(nCanHeal <= nDamage) + { + ai_UseFeat(oCreature, FEAT_LAY_ON_HANDS, oTarget); + return TRUE; + } + } + int nMaxLevel = 9; + if(ai_UseCreatureTalent(oCreature, AI_TALENT_HEALING, nInMelee, nMaxLevel, oTarget)) return TRUE; + if(AI_DEBUG) ai_Debug("0i_talents", "275", GetName(oCreature) + " has no healing spells!" + + " Cleric lvls: " + IntToString(GetLevelByClass(CLASS_TYPE_CLERIC, oCreature)) + + " Sontaneous casting: " + IntToString(ai_GetMagicMode(oCreature, AI_MAGIC_NO_SPONTANEOUS_CURE))); + if(bUseMagic && GetLevelByClass(CLASS_TYPE_CLERIC, oCreature) && + !ai_GetMagicMode(oCreature, AI_MAGIC_NO_SPONTANEOUS_CURE)) + { + // We need to check our talents and see what spells we can convert. + if(ai_UseSpontaneousCureTalentFromCategory(oCreature, AI_TALENT_ENHANCEMENT, nInMelee, nDamage, oTarget)) return TRUE; + if(ai_UseSpontaneousCureTalentFromCategory(oCreature, AI_TALENT_PROTECTION, nInMelee, nDamage, oTarget)) return TRUE; + if(ai_UseSpontaneousCureTalentFromCategory(oCreature, AI_TALENT_DISCRIMINANT_AOE, nInMelee, nDamage, oTarget)) return TRUE; + if(ai_UseSpontaneousCureTalentFromCategory(oCreature, AI_TALENT_INDISCRIMINANT_AOE, nInMelee, nDamage, oTarget)) return TRUE; + if(ai_UseSpontaneousCureTalentFromCategory(oCreature, AI_TALENT_TOUCH, nInMelee, nDamage, oTarget)) return TRUE; + if(ai_UseSpontaneousCureTalentFromCategory(oCreature, AI_TALENT_RANGED, nInMelee, nDamage, oTarget)) return TRUE; + if(ai_UseSpontaneousCureTalentFromCategory(oCreature, AI_TALENT_SUMMON, nInMelee, nDamage, oTarget)) return TRUE; + } } return FALSE; } @@ -347,6 +430,9 @@ int ai_CheckTargetVsConditions(object oTarget, json jTalent, int nConditions) if(ai_GetHasNegativeCondition(AI_CONDITION_ATK_DECREASE, nConditions)) return TRUE; if(ai_GetHasNegativeCondition(AI_CONDITION_DMG_DECREASE, nConditions)) return TRUE; if(ai_GetHasNegativeCondition(AI_CONDITION_DMG_I_DECREASE, nConditions)) return TRUE; + case SPELL_RAISE_DEAD : + case SPELL_RESURRECTION : + if(ai_GetHasNegativeCondition(AI_CONDITION_DEAD, nConditions)) return TRUE; } return FALSE; } @@ -354,7 +440,7 @@ int ai_CheckTalentsVsConditions(object oCreature, int nConditions, int nInMelee, { // Get the saved category from oCreature. json jCategory = GetLocalJson(oCreature, AI_TALENT_CURE); - if(AI_DEBUG) ai_Debug("0i_talents", "357", "jCategory: " + AI_TALENT_CURE + " " + JsonDump(jCategory, 2)); + if(AI_DEBUG) ai_Debug("0i_talents", "362", "jCategory: " + AI_TALENT_CURE + " " + JsonDump(jCategory, 2)); if(JsonGetType(jCategory) == JSON_TYPE_NULL) { SetLocalInt(oCreature, AI_MAX_TALENT + AI_TALENT_CURE, -1); @@ -362,7 +448,7 @@ int ai_CheckTalentsVsConditions(object oCreature, int nConditions, int nInMelee, } // Get the max talent level so we can skip the higher ones and save time. int nMaxTalentLevel = GetLocalInt(oCreature, AI_MAX_TALENT + AI_TALENT_CURE); - if(AI_DEBUG) ai_Debug("0i_talents", "365", AI_MAX_TALENT + AI_TALENT_CURE + ": " + + if(AI_DEBUG) ai_Debug("0i_talents", "370", AI_MAX_TALENT + AI_TALENT_CURE + ": " + IntToString(nMaxTalentLevel) + " nLevel: " + IntToString(nLevel)); if(nMaxTalentLevel < nLevel) nLevel = nMaxTalentLevel; @@ -371,7 +457,7 @@ int ai_CheckTalentsVsConditions(object oCreature, int nConditions, int nInMelee, int nClass, nSlot, nType, nSlotIndex, nMaxSlotIndex, nTalentUsed; int bUseMagic = !ai_GetMagicMode(oCreature, AI_MAGIC_NO_MAGIC); int bUseMagicItems = !ai_GetMagicMode(oCreature, AI_MAGIC_NO_MAGIC_ITEMS); - if(AI_DEBUG) ai_Debug("0i_talents", "374", "bUseMagic: " + IntToString(bUseMagic) + + if(AI_DEBUG) ai_Debug("0i_talents", "379", "bUseMagic: " + IntToString(bUseMagic) + " bUseMagicItems: " + IntToString(bUseMagicItems)); // Loop through nLevels down to 0 looking for the first talent (i.e. the highest). while(nLevel >= 0) @@ -379,7 +465,7 @@ int ai_CheckTalentsVsConditions(object oCreature, int nConditions, int nInMelee, // Get the array of nLevel cycling down to 0. jLevel = JsonArrayGet(jCategory, nLevel); nMaxSlotIndex = JsonGetLength(jLevel); - if(AI_DEBUG) ai_Debug("0i_talents", "382", "nLevel: " + IntToString(nLevel) + + if(AI_DEBUG) ai_Debug("0i_talents", "387", "nLevel: " + IntToString(nLevel) + " nMaxSlotIndex: " + IntToString(nMaxSlotIndex)); if(nMaxSlotIndex > 0) { @@ -388,9 +474,9 @@ int ai_CheckTalentsVsConditions(object oCreature, int nConditions, int nInMelee, while (nSlotIndex <= nMaxSlotIndex) { jTalent= JsonArrayGet(jLevel, nSlotIndex); - if(AI_DEBUG) ai_Debug("0i_talents", "391", "nSlotIndex: " + IntToString(nSlotIndex) + + if(AI_DEBUG) ai_Debug("0i_talents", "396", "nSlotIndex: " + IntToString(nSlotIndex) + " jTalent Type: " + IntToString(JsonGetType(jTalent))); - // Check to see if the talent matches oTargets nConditionss. + // Check to see if the talent matches oTargets nConditions. if(ai_CheckTargetVsConditions(oTarget, jTalent, nConditions)) { nType = JsonGetInt(JsonArrayGet(jTalent, 0)); @@ -402,12 +488,13 @@ int ai_CheckTalentsVsConditions(object oCreature, int nConditions, int nInMelee, { nTalentUsed = ai_UseCreatureSpellTalent(oCreature, jLevel, jTalent, AI_TALENT_CURE, nInMelee, oTarget); // -1 means it was a memorized spell and we need to remove it. - if(nTalentUsed == -1) - { - ai_RemoveTalent(oCreature, jCategory, jLevel, AI_TALENT_CURE, nLevel, nSlotIndex); - return TRUE; - } - else if(nTalentUsed) return TRUE; + //if(nTalentUsed == -1) + //{ + // ai_RemoveTalent(oCreature, jCategory, jLevel, AI_TALENT_CURE, nLevel, nSlotIndex); + // return TRUE; + //} + //else + if(nTalentUsed) return TRUE; } } else if(nType == AI_TALENT_TYPE_SP_ABILITY) @@ -449,14 +536,16 @@ int ai_TryCureConditionTalent(object oCreature, int nInMelee, object oTarget = O { // Is Casting Cure spells off? if(ai_GetMagicMode(oCreature, AI_MAGIC_CURE_SPELLS_OFF)) return FALSE; - if(AI_DEBUG) ai_Debug("0i_talents", "450", AI_MAX_TALENT + AI_TALENT_CURE + ": " + + if(AI_DEBUG) ai_Debug("0i_talents", "460", AI_MAX_TALENT + AI_TALENT_CURE + ": " + IntToString(GetLocalInt(oCreature, AI_MAX_TALENT + AI_TALENT_CURE))); // If the creature doesn't have cure talents then we set it to -1. if(GetLocalInt(oCreature, AI_MAX_TALENT + AI_TALENT_CURE) == -1) return FALSE; // We check targets to see if they need to be cured. int nNegativeConditions, nTargetNegConds, nIndex, nCnt = 1; + // Check for dead allies. object oTarget; - if(oTarget == OBJECT_INVALID) + object oDead = ai_GetNearestAlly(oCreature, 1, CREATURE_TYPE_IS_ALIVE, FALSE); + if(oDead == OBJECT_INVALID) { oTarget = GetLocalObject(oCreature, AI_ALLY + "1"); while(oTarget != OBJECT_INVALID) @@ -480,15 +569,15 @@ int ai_TryCureConditionTalent(object oCreature, int nInMelee, object oTarget = O } else { - nNegativeConditions = ai_GetNegativeConditions(oTarget); - if(!nNegativeConditions) return FALSE; + nNegativeConditions = AI_CONDITION_DEAD; + oTarget = oDead; } if(oTarget == oCreature) { if(ai_GetAIMode(oCreature, AI_MODE_SELF_HEALING_OFF)) return FALSE; } else if(ai_GetAIMode(oCreature, AI_MODE_PARTY_HEALING_OFF)) return FALSE; - if(AI_DEBUG) ai_Debug("0i_talents", "489", "nNegativeConditions: " + IntToString(nNegativeConditions) + + if(AI_DEBUG) ai_Debug("0i_talents", "501", "nNegativeConditions: " + IntToString(nNegativeConditions) + " on " + GetName(oTarget)); if(ai_CheckTalentsVsConditions(oCreature, nNegativeConditions, nInMelee, 9, oTarget)) return TRUE; return FALSE; @@ -500,7 +589,7 @@ int ai_TryCureConditionTalent(object oCreature, int nInMelee, object oTarget = O int ai_TryDefensiveTalents(object oCreature, int nInMelee, int nMaxLevel, int nRound = 0, object oTarget = OBJECT_INVALID) { - // Summons are powerfull and should be used as much as possible. + // Summons are powerful and should be used as much as possible. if(ai_UseCreatureTalent(oCreature, AI_TALENT_SUMMON, nInMelee, nMaxLevel, oTarget)) return TRUE; // Added to reduce casting defensive talents later in combat and constantly. if(nRound >= d8()) return FALSE; @@ -852,29 +941,52 @@ int ai_TryKnockdownFeat(object oCreature, object oTarget) ai_UseFeat(oCreature, FEAT_KNOCKDOWN, oTarget); return TRUE; } +int ai_GetHasPolymorphSelfFeat(object oCreature) +{ + // Lets check to see if we should actually Polymorph? + if(GetHasFeat(FEAT_EPIC_OUTSIDER_SHAPE)) return 3; + else if(GetHasFeat(FEAT_EPIC_CONSTRUCT_SHAPE)) return 3; + else if(GetHasFeat(FEAT_EPIC_WILD_SHAPE_DRAGON)) return 3; + else if(GetHasFeat(FEAT_EPIC_WILD_SHAPE_UNDEAD)) return 3; + else if(GetHasFeat(FEAT_GREATER_WILDSHAPE_4)) return 2; + else if(GetHasFeat(FEAT_GREATER_WILDSHAPE_3)) return 2; + else if(GetHasFeat(FEAT_GREATER_WILDSHAPE_2)) return 1; + else if(GetHasFeat(FEAT_GREATER_WILDSHAPE_1)) return 1; + if(GetHasFeat(FEAT_HUMANOID_SHAPE)) return 0; + else if(GetHasFeat(FEAT_ELEMENTAL_SHAPE)) return 0; + else if(GetHasFeat(FEAT_WILD_SHAPE)) return 0; + return -1; +} int ai_TryPolymorphSelfFeat(object oCreature) { // Lets check to see if we should actually Polymorph? - if(GetHasFeat(FEAT_EPIC_OUTSIDER_SHAPE)) { int nSubFeat = Random(3) + 733; // 733 azer, 734 rakshasa, 735 Slaad. - if(ai_UseFeat(oCreature, FEAT_EPIC_OUTSIDER_SHAPE, oCreature, nSubFeat)) return TRUE; + if(AI_DEBUG) ai_Debug("0i_talents", "863", " Using outsider shape 3 feat: " + IntToString(nSubFeat)); + ai_UseFeat(oCreature, FEAT_EPIC_OUTSIDER_SHAPE, oCreature, nSubFeat); + return TRUE; } else if(GetHasFeat(FEAT_EPIC_CONSTRUCT_SHAPE)) { int nSubFeat = Random(3) + 738; // 738 Stone, 739 Flesh, 740 Iron. - if(ai_UseFeat(oCreature, FEAT_EPIC_CONSTRUCT_SHAPE, oCreature, nSubFeat)) return TRUE; + if(AI_DEBUG) ai_Debug("0i_talents", "868", " Using construct shape 3 feat: " + IntToString(nSubFeat)); + ai_UseFeat(oCreature, FEAT_EPIC_CONSTRUCT_SHAPE, oCreature, nSubFeat); + return TRUE; } else if(GetHasFeat(FEAT_EPIC_WILD_SHAPE_DRAGON)) { int nSubFeat = Random(3) + 707; // 707 Red, 708 Blue, 709 Green. - if(ai_UseFeat(oCreature, FEAT_EPIC_WILD_SHAPE_DRAGON, oCreature, nSubFeat)) return TRUE; + if(AI_DEBUG) ai_Debug("0i_talents", "873", " Using dragon shape 3 feat: " + IntToString(nSubFeat)); + ai_UseFeat(oCreature, FEAT_EPIC_WILD_SHAPE_DRAGON, oCreature, nSubFeat); + return TRUE; } else if(GetHasFeat(FEAT_EPIC_WILD_SHAPE_UNDEAD)) { int nSubFeat = Random(3) + 704; // 704 Risen Lord, 705 Vampire, 706 Spectre. - if(ai_UseFeat(oCreature, FEAT_EPIC_WILD_SHAPE_UNDEAD, oCreature, nSubFeat)) return TRUE; + if(AI_DEBUG) ai_Debug("0i_talents", "878", " Using undead shape 3 feat: " + IntToString(nSubFeat)); + ai_UseFeat(oCreature, FEAT_EPIC_WILD_SHAPE_UNDEAD, oCreature, nSubFeat); + return TRUE; } else if(GetHasFeat(FEAT_GREATER_WILDSHAPE_4)) { @@ -883,7 +995,9 @@ int ai_TryPolymorphSelfFeat(object oCreature) if(nRoll == 1) nSubFeat = 679; // Medusa else if(nRoll == 2) nSubFeat = 691; // Mindflayer else nSubFeat = 694; // DireTiger - if(ai_UseFeat(oCreature, FEAT_GREATER_WILDSHAPE_4, oCreature, nSubFeat)) return TRUE; + if(AI_DEBUG) ai_Debug("0i_talents", "887", " Using wild shape 3 feat: " + IntToString(nSubFeat)); + ai_UseFeat(oCreature, FEAT_GREATER_WILDSHAPE_4, oCreature, nSubFeat); + return TRUE; } else if(GetHasFeat(FEAT_GREATER_WILDSHAPE_3)) { @@ -892,7 +1006,9 @@ int ai_TryPolymorphSelfFeat(object oCreature) if(nRoll == 1) nSubFeat = 670; // Basilisk else if(nRoll == 2) nSubFeat = 673; // Drider else nSubFeat = 674; // Manticore - if(ai_UseFeat(oCreature, FEAT_GREATER_WILDSHAPE_3, oCreature, nSubFeat)) return TRUE; + if(AI_DEBUG) ai_Debug("0i_talents", "897", " Using wild shape 3 feat: " + IntToString(nSubFeat)); + ai_UseFeat(oCreature, FEAT_GREATER_WILDSHAPE_3, oCreature, nSubFeat); + return TRUE; } else if(GetHasFeat(FEAT_GREATER_WILDSHAPE_2)) { @@ -901,29 +1017,40 @@ int ai_TryPolymorphSelfFeat(object oCreature) if(nRoll == 1) nSubFeat = 672; // Harpy else if(nRoll == 2) nSubFeat = 678; // Gargoyle else nSubFeat = 680; // Minotaur - if(ai_UseFeat(oCreature, FEAT_GREATER_WILDSHAPE_2, oCreature, nSubFeat)) return TRUE; + if(AI_DEBUG) ai_Debug("0i_talents", "910", " Using greater wild shape 2 feat: " + IntToString(nSubFeat)); + ai_UseFeat(oCreature, FEAT_GREATER_WILDSHAPE_2, oCreature, nSubFeat); + return TRUE; } else if(GetHasFeat(FEAT_GREATER_WILDSHAPE_1)) { int nSubFeat = Random(5) + 658; // Wyrmling - if(ai_UseFeat(oCreature, FEAT_GREATER_WILDSHAPE_1, oCreature, nSubFeat)) return TRUE; + if(AI_DEBUG) ai_Debug("0i_talents", "910", " Using greater wild shape 1 feat: " + IntToString(nSubFeat)); + ai_UseFeat(oCreature, FEAT_GREATER_WILDSHAPE_1, oCreature, nSubFeat); + return TRUE; } if(GetHasFeat(FEAT_HUMANOID_SHAPE)) { int nSubFeat = Random(3) + 682; // 682 Drow, 683 Lizard, 684 Kobold. - if(ai_UseFeat(oCreature, FEAT_HUMANOID_SHAPE, oCreature, nSubFeat)) return TRUE; + if(AI_DEBUG) ai_Debug("0i_talents", "915", " Using humanoid shape feat: " + IntToString(nSubFeat)); + ai_UseFeat(oCreature, FEAT_HUMANOID_SHAPE, oCreature, nSubFeat); + return TRUE; } else if(GetHasFeat(FEAT_ELEMENTAL_SHAPE)) { int nSubFeat = Random(4) + SUBFEAT_ELEMENTAL_SHAPE_EARTH; - if(ai_UseFeat(oCreature, FEAT_ELEMENTAL_SHAPE, oCreature, nSubFeat)) return TRUE; + if(AI_DEBUG) ai_Debug("0i_talents", "958", " Using Elemental shape feat: " + IntToString(nSubFeat)); + ai_UseFeat(oCreature, FEAT_ELEMENTAL_SHAPE, oCreature, nSubFeat); + return TRUE; } else if(GetHasFeat(FEAT_WILD_SHAPE)) { int nSubFeat; int nCompanionType = GetAnimalCompanionCreatureType(oCreature); - if(nCompanionType == ANIMAL_COMPANION_CREATURE_TYPE_NONE) + if(nCompanionType == ANIMAL_COMPANION_CREATURE_TYPE_NONE || + !GetLocalInt(GetModule(), AI_RULE_SUMMON_COMPANIONS)) + { nSubFeat = Random(5) + SUBFEAT_WILD_SHAPE_BROWN_BEAR; + } else { if(nCompanionType == ANIMAL_COMPANION_CREATURE_TYPE_BADGER) @@ -938,7 +1065,7 @@ int ai_TryPolymorphSelfFeat(object oCreature) nSubFeat = SUBFEAT_WILD_SHAPE_WOLF; else nSubFeat = Random(5) + SUBFEAT_WILD_SHAPE_BROWN_BEAR; } - if(AI_DEBUG) ai_Debug("0i_talents", "885", " Using wild shape feat: " + IntToString(nSubFeat)); + if(AI_DEBUG) ai_Debug("0i_talents", "985", " Using wild shape feat: " + IntToString(nSubFeat)); ai_UseFeat(oCreature, FEAT_WILD_SHAPE, oCreature, nSubFeat); return TRUE; } @@ -1063,6 +1190,7 @@ int ai_TryLayOnHands(object oCreature) int ai_TryTurningTalent(object oCreature) { if(!GetHasFeat(FEAT_TURN_UNDEAD, oCreature)) return FALSE; + if(ai_GetMagicMode(oCreature, AI_MAGIC_NO_MAGIC)) return FALSE; if(AI_DEBUG) ai_Debug("0i_talents", "1043", "Checking for Turning Targets."); int nHDCount, nHDCount2, nRacial, nHD; // Get characters levels. @@ -1217,6 +1345,165 @@ int ai_TryWholenessOfBodyFeat(object oCreature) ai_UseFeat(oCreature, FEAT_WHOLENESS_OF_BODY, oCreature); return TRUE; } +//:: [PRC8] Tests & runs Awesome Blow +int ai_TryAwesomeBlowFeat(object oCreature, object oTarget) +{ + //:: FEAT_AWESOME_BLOW (5370) + if(!GetHasFeat(5370, oCreature)) return FALSE; + if(AI_DEBUG) ai_Debug("0i_talents", "1250", "ai_TryAwesomeBlowFeat: Sanity Check PASSED!"); + //:: Can't Awesome Blow incorporeal creatures + if(GetLocalInt(oTarget, "X2_L_IS_INCORPOREAL") || ai_GetHasEffectType(oTarget, EFFECT_TYPE_ETHEREAL)) return FALSE; + if(AI_DEBUG) ai_Debug("0i_talents", "1255", "ai_TryAwesomeBlowFeat: Incorporealty check PASSED!"); + //:: Get sizes + int nSizeCreature = GetCreatureSize(oCreature); + int nSizeTarget = GetCreatureSize(oTarget); + //:: Must be larger than target + if(nSizeCreature <= nSizeTarget) + return FALSE; + if(AI_DEBUG) ai_Debug("0i_talents", "1265", "ai_TryAwesomeBlowFeat: Size check PASSED!"); + //:: Should we use Awesome Blow? + if(!ai_CanIAwesomeBlow(oCreature, oTarget)) return FALSE; + ai_UseFeat(oCreature, 5370, oTarget); + return TRUE; +} +//:: [PRC8] Tests & runs Overrun +int ai_TryOverrunFeat(object oCreature, object oTarget) +{ + //:: FEAT_OVERRUN (2811) + if(!GetHasFeat(2811, oCreature)) return FALSE; + if(AI_DEBUG) ai_Debug("0i_talents", "1281", "ai_TryOverrunFeat: Sanity Check PASSED!"); + //:: Get sizes + int nSizeCreature = GetCreatureSize(oCreature); + int nSizeTarget = GetCreatureSize(oTarget); + //:: One size smaller than target at best. + if(nSizeCreature + 1 <= nSizeTarget) return FALSE; + if(AI_DEBUG) ai_Debug("0i_talents", "1291", "ai_TryOverrunFeat: Size Check PASSED!"); + // Should we use Overrun? + if(!ai_CanIOverrun(oCreature, oTarget)) return FALSE; + if(AI_DEBUG) ai_Debug("0i_talents", "1296", "ai_TryOverrunFeat: ai_CanIOverrun Check PASSED!"); + ai_UseFeat(oCreature, 2811, oTarget); + return TRUE; +} +//:: [PRC8] Tests & runs Bullrush +int ai_TryBullrushFeat(object oCreature, object oTarget) +{ + //:: FEAT_BULLRUSH (2810) + //:: FEAT_IMPROVED_BULLRUSH (2806) + //:: FEAT_BULLRUSH_CHARGE (3413) + if(!GetHasFeat(2810 /* FEAT_BULLRUSH */, oCreature)) return FALSE; + if(AI_DEBUG) ai_Debug("0i_talents", "1312", "ai_TryBullrushFeat: Sanity Check PASSED!"); + //:: Get sizes + int nSizeCreature = GetCreatureSize(oCreature); + int nSizeTarget = GetCreatureSize(oTarget); + //:: One size smaller than target at best + if(nSizeCreature + 1 <= nSizeTarget) return FALSE; + if(AI_DEBUG) ai_Debug("0i_talents", "1322", "ai_TryBullrushFeat: Size Check PASSED!"); + if(d10() > 5) return FALSE; + if(AI_DEBUG) ai_Debug("0i_talents", "1327", "ai_TryBullrushFeat: Randomizer PASSED!"); + //:: Verify if attempt is reasonable + if(!ai_CanIBullrush(oCreature, oTarget)) return FALSE; + if(AI_DEBUG) ai_Debug("0i_talents", "1333", "ai_TryBullrushFeat: ai_CanIBullrush Check PASSED!"); + //:: Decide whether to charge or not + float fDistance = GetDistanceBetween(oCreature, oTarget); + if (fDistance > 3.0 && GetHasFeat(3413 /* FEAT_BULLRUSH_CHARGE */, oCreature)) + { + if(AI_DEBUG) ai_Debug("0i_talents", "1335", "ai_TryBullrushFeat: Using Bullrush Charge."); + ai_UseFeat(oCreature, 3413 /* FEAT_BULLRUSH_CHARGE */, oTarget); + } + else + { + if(AI_DEBUG) ai_Debug("0i_talents", "1340", "ai_TryBullrushFeat: Using Bullrush."); + ai_UseFeat(oCreature, 2810 /* FEAT_BULLRUSH */, oTarget); //:: + } + return TRUE; +} +//:: [PRC8] Tests & runs Ranged Disarm +int ai_TryRangedDisarmFeat(object oCreature, object oTarget) +{ + //:: Sanity checks + if(!GetIsObjectValid(oCreature) || !GetIsObjectValid(oTarget)) return FALSE; + if(!GetHasFeat(5192 /*FEAT_RANGED_DISARM*/, oCreature)) return FALSE; + if(AI_DEBUG) ai_Debug("0i_talents", "1339", "ai_TryRangedDisarmFeat: Sanity Check PASSED!"); + //:: Must have a ranged weapon equipped + object oWeapon = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oCreature); + if(!GetIsObjectValid(oWeapon) || !GetWeaponRanged(oWeapon)) return FALSE; + if(AI_DEBUG) ai_Debug("0i_talents", "1345", "ai_TryRangedDisarmFeat: Equipped w/ Bow Check PASSED!"); + //:: Target must be disarmable + if(!GetLocalInt(GetModule(), "PRC_PNP_DISARM") && !GetIsCreatureDisarmable(oTarget)) return FALSE; + if(AI_DEBUG) ai_Debug("0i_talents", "1350", "ai_TryRangedDisarmFeat: Target Disarmable Check PASSED!"); + //:: Target must be holding a weapon + object oTargetWeapon = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oTarget); + if(!GetIsObjectValid(oTargetWeapon)) return FALSE; + if(AI_DEBUG) ai_Debug("0i_talents", "1350", "ai_TryRangedDisarmFeat: Target Armed Check PASSED!"); + //:: Check range to target - max 30 feet for this feat + if(GetDistanceBetween(oCreature, oTarget) > 30.0) return FALSE; + if(AI_DEBUG) ai_Debug("0i_talents", "1350", "ai_TryRangedDisarmFeat: Target Distance Check PASSED!"); + int nOWeaponType = GetBaseItemType(oWeapon); + int nOWeaponSize = StringToInt(Get2DAString("baseitems", "WeaponSize", nOWeaponType)); + int nEWeaponType = GetBaseItemType(oTargetWeapon); + int nEWeaponSize = StringToInt(Get2DAString("baseitems", "WeaponSize", nEWeaponType)); + int nSizeBonus = (nOWeaponSize - nEWeaponSize) * 4; + //:: Attack penalty check + if (!ai_AttackPenaltyOk(oCreature, oTarget, IntToFloat(nSizeBonus))) return FALSE; + if(AI_DEBUG) ai_Debug("0i_talents", "1350", "ai_TryRangedDisarmFeat: Attack Check PASSED!"); + //:: Execute the feat use + ai_UseFeat(oCreature, 5192 /*FEAT_RANGED_DISARM*/, oTarget); + return TRUE; +} +//:: [PRC8] Tests & runs Swarm of Arrows +int ai_TrySwarmofArrowsFeat(object oCreature) +{ + //:: Sanity checks + if(!GetIsObjectValid(oCreature)) return FALSE; + if(!GetHasFeat(25995 /*FEAT_EPIC_SWARM_OF_ARROWS*/, oCreature)) return FALSE; + if(AI_DEBUG) ai_Debug("0i_talents", "1369", "ai_TrySwarmofArrowsFeat: Sanity Check PASSED!"); + //:: Must have a longbow or shortbow equipped + object oWeapon = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oCreature); + int nBaseItem = GetBaseItemType(oWeapon); + if(!GetIsObjectValid(oWeapon)) return FALSE; + if(nBaseItem != BASE_ITEM_LONGBOW && nBaseItem != BASE_ITEM_SHORTBOW) return FALSE; + if(AI_DEBUG) ai_Debug("0i_talents", "1377", "ai_TrySwarmofArrowsFeat: Weapon Check PASSED!"); + //:: Are we in melee combat? + //int nInMelee = ai_GetNumOfEnemiesInRange(oCreature); + //if( !ai_CanIUseRangedWeapon(oCreature, nInMelee)) return FALSE; + if(AI_DEBUG) ai_Debug("0i_talents", "1382", "ai_TrySwarmofArrowsFeat: Safe Distance DISABLED!"); + //:: Are there 3+ enemies to attack within 30'? + int nNumOfEnemies = ai_GetNumOfEnemiesInGroup(oCreature, FeetToMeters(30.0)); + if(nNumOfEnemies < 3) return FALSE; + if(AI_DEBUG) ai_Debug("0i_talents", "1387", "ai_TrySwarmofArrowsFeat: "+IntToString(nNumOfEnemies)+" enemies in range, PASSED!"); + //:: Execute the feat use + ai_UseFeat(oCreature, 25995 /*FEAT_EPIC_SWARM_OF_ARROWS*/, oCreature); + return TRUE; +} +//:: [PRC8] Tests & runs Inlindl School Strike +int ai_TryInlindlSchoolFeat(object oCreature, object oTarget) +{ + if (!GetHasFeat(5284/* FEAT_INLINDL_SCHOOL */, oCreature)) return FALSE; + object oWeapon = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oCreature); + int nWeaponType = GetBaseItemType(oWeapon); + int nWeaponSize = StringToInt(Get2DAString("baseitems", "WeaponSize", nWeaponType)); + int nCreatureSize = GetCreatureSize(oCreature); + if(!GetIsObjectValid(oWeapon)) return FALSE; + if(nWeaponType != BASE_ITEM_RAPIER && nWeaponType != 203 /* BASE_ITEM_ELVEN_THINBLADE */ && + nWeaponType != 204 /* BASE_ITEM_ELVEN_COURTBLADE */ && + (nWeaponSize > 3 || nWeaponSize >= nCreatureSize)) return FALSE; + if(AI_DEBUG) ai_Debug("0i_talents", "1404", "ai_TryInlindlSchoolFeat: Weapon Check PASSED!"); + //:: Are we in melee combat? + if(ai_GetNumOfEnemiesInRange(oCreature) < 1) return FALSE; + if(AI_DEBUG) ai_Debug("0i_talents", "1408", "ai_TryInlindlSchoolFeat: Melee Combat DETECTED!"); + int nShieldAC = ai_GetTotalShieldACBonus(oCreature); + if(nShieldAC < 2) return FALSE; + if(AI_DEBUG) ai_Debug("0i_talents", "1412", "Inlindl School: Shield AC Check PASSED!"); + float fACPenalty = -1 * IntToFloat(nShieldAC); + if(AI_DEBUG) ai_Debug("0i_talents", "1416", "ai_TryInlindlSchoolFeat >> Att Bonus: " + IntToString(nShieldAC/2) + " AC Malus: "+FloatToString(fACPenalty)+"."); + if(ai_AttackBonusGood(oCreature, oTarget, IntToFloat(nShieldAC/2))) return FALSE; + if(AI_DEBUG) ai_Debug("0i_talents", "1420", "ai_TryInlindlSchoolFeat: Att Bonus PASSED!"); + if(ai_ACAdjustmentGood(oCreature, oTarget, fACPenalty)) return FALSE; + if(AI_DEBUG) ai_Debug("0i_talents", "1424", "ai_TryInlindlSchoolFeat: AC Malus PASSED!"); + //:: Execute the feat use + ai_UseFeat(oCreature, 5284 /*FEAT_INLINDL_SCHOOL*/, oTarget); + return TRUE; +} // ***************************************************************************** // ******************** Try Physical Attack Talents **************************** // ***************************************************************************** @@ -1261,7 +1548,7 @@ int ai_TryDragonBreathAttack(object oCreature, int nRound, object oTarget = OBJE if(!GetIsTalentValid(tUse)) return FALSE; if(oTarget == OBJECT_INVALID) { - string sIndex = IntToString(ai_GetHighestMeleeIndexNotInAOE(oCreature)); + string sIndex = IntToString(ai_GetHighestGroupIndexNotInAOE(oCreature)); oTarget = GetLocalObject(oCreature, AI_ENEMY + sIndex); if(oTarget == OBJECT_INVALID) return FALSE; } @@ -1537,7 +1824,7 @@ int ai_TrySneakAttack(object oCreature, int nInMelee, int bAlwaysAtk = TRUE) sIndex = IntToString(ai_GetBestSneakAttackIndex(oCreature, AI_RANGE_MELEE)); } // Ok we are in a serious fight so lets not give attack of opportunities. - else sIndex = IntToString(ai_GetNearestIndex(oCreature, AI_RANGE_MELEE)); + else sIndex = IntToString(ai_GetNearestPhysicalIndex(oCreature, AI_RANGE_MELEE)); oTarget = GetLocalObject(oCreature, AI_ENEMY + sIndex); } if(oTarget == OBJECT_INVALID) return FALSE; @@ -1566,6 +1853,12 @@ int ai_TryRangedSneakAttack(object oCreature, int nInMelee) ai_ActionAttack(oCreature, AI_LAST_ACTION_RANGED_ATK, oTarget, nInMelee, TRUE); return TRUE; } +int ai_TryRangedTalents(object oCreature, object oTarget, int nInMelee) +{ + if(AI_DEBUG) ai_Debug("0i_talents", "1593", "Check category melee talents!"); + if(ai_TryRapidShotFeat(oCreature, oTarget, nInMelee)) return TRUE; + return FALSE; +} int ai_TryMeleeTalents(object oCreature, object oTarget) { if(AI_DEBUG) ai_Debug("0i_talents", "1224", "Check category melee talents!"); @@ -1586,8 +1879,117 @@ int ai_TryMeleeTalents(object oCreature, object oTarget) else if(nId == FEAT_DISARM) { if(ai_TryDisarmFeat(oCreature, oTarget)) return TRUE; } else if(nId == FEAT_KI_DAMAGE) { if(ai_TryKiDamageFeat(oCreature, oTarget)) return TRUE; } else if(nId == FEAT_CALLED_SHOT) { if(ai_TryCalledShotFeat(oCreature, oTarget)) return TRUE; } + else if(GetLocalInt(GetModule(), AI_USING_PRC)) + { + if(nId == 2822) { if(ai_TryTripping(oCreature, oTarget)) return TRUE; } //:: FEAT_CM_TRIP (2822) + else if(nId == 2823) { if(ai_TryCharging(oCreature, oTarget)) return TRUE; } //:: FEAT_CM_CHARGE (2823) + else if(nId == 5370) { if(ai_TryAwesomeBlowFeat(oCreature, oTarget)) return TRUE; } //:: FEAT_AWESOME_BLOW (5370) + else if(nId == 2810) { if(ai_TryBullrushFeat(oCreature, oTarget)) return TRUE; } //:: FEAT_BULLRUSH (2810) + else if(nId == 3414) { if(ai_TryGrappling(oCreature, oTarget)) return TRUE; } //:: FEAT_CM_GRAPPLE (3414) + else if(nId == 2811) { if(ai_TryOverrunFeat(oCreature, oTarget)) return TRUE; } //:: FEAT_OVERRUN (2811) + else if(nId == 5284) { if(ai_TryInlindlSchoolFeat(oCreature, oTarget)) return TRUE; } //:: FEAT_INLINDL_SCHOOL (5284) + } return FALSE; } +//:: [PRC8] Tests & runs Trip +int ai_TryTripping(object oCreature, object oTarget) +{ + //:: FEAT_TRIP (2822) + //:: FEAT_IMPROVED_TRIP (2807) + //:: Sanity checks + if(!GetIsObjectValid(oCreature) || !GetIsObjectValid(oTarget)) return FALSE; + if(!GetHasFeat(2822, oCreature)) return FALSE; + if(AI_DEBUG) ai_Debug("0i_talents", "1862", "ai_TryTripping: Sanity Checks PASSED!"); + /* int nCoolDown = GetLocalInt(oCreature, "AI_TRIP_COOLDOWN"); + if(nCoolDown > 0) + { + SetLocalInt(oCreature, "AI_TRIP_COOLDOWN", --nCoolDown); + return FALSE; + } */ + int nMySize = GetCreatureSize(oCreature); + int nTheirSize = GetCreatureSize(oTarget); + //:: Prevent silly use of knockdown on immune or too-large targets. + if(GetIsImmune(oTarget, IMMUNITY_TYPE_KNOCKDOWN) || nTheirSize > nMySize + 1) return FALSE; + if(AI_DEBUG) ai_Debug("0i_talents", "1879", "ai_TryTripping: Immunity Checks PASSED!"); + if(!ai_CanITrip(oCreature, oTarget)) return FALSE; + if(AI_DEBUG) ai_Debug("0i_talents", "1883", "ai_TryTripping: ai_CanITrip Check PASSED!"); + ai_UseFeat(oCreature, 2822 /* FEAT_TRIP */, oTarget); + //SetLocalInt(oCreature, "AI_TRIP_COOLDOWN", AI_TRIP_COOLDOWN); + return TRUE; +} +//:: [PRC8] Tests & runs Charge +int ai_TryCharging(object oCreature, object oTarget) +{ + //:: FEAT_CM_CHARGE (2823) + //:: FEAT_BULLRUSH_CHARGE (3413) + //:: FEAT_MINOTAUR_CHARGE (4668) + //:: FEAT_ACROBATIC_CHARGE (2808) + //:: FEAT_SHIELD_CHARGE (3256) + //:: FEAT_POWERFUL_CHARGE (3506) + //:: FEAT_GREATER_POWERFUL_CHARGE (3507) + //:: FEAT_RHINO_TRIBE_CHARGE (3508) + //:: FEAT_FURIOUS_CHARGE (3509) + //:: FEAT_RECKLESS_CHARGE (3510) + //:: FEAT_COBALT_CHARGE (8878) + if (!GetHasFeat(2823, oCreature)) return FALSE; + if(AI_DEBUG) ai_Debug("0i_talents", "1901", "ai_TryCharging: Sanity Check PASSED!"); + int nChargeScore = GetHasFeat(2823, oCreature) + // FEAT_CM_CHARGE + GetHasFeat(3413, oCreature) + // FEAT_BULLRUSH_CHARGE + GetHasFeat(4668, oCreature) + // Minotaur + GetHasFeat(2808, oCreature) + // Acrobatic + GetHasFeat(3256, oCreature) + // Shield + GetHasFeat(3506, oCreature) + // Powerful + GetHasFeat(3507, oCreature) + // Greater Powerful + GetHasFeat(3508, oCreature) + // Rhino Tribe + GetHasFeat(3509, oCreature) + // Furious + GetHasFeat(3510, oCreature) + // Reckless + GetHasFeat(8878, oCreature); // Cobalt + if(AI_DEBUG) ai_Debug("0i_talents", "1915", "ai_TryCharging: Charge Score is: "+IntToString(nChargeScore)+"."); + //:: Charge inclination threshold check + if(d20() > 7 + nChargeScore) return FALSE; + if(AI_DEBUG) ai_Debug("0i_talents", "1921", "ai_TryCharging: Threshold Check PASSED!"); + //:: Movement check + float f2DASpeed = StringToFloat(Get2DAString("racialtypes", "Endurance", GetRacialType(oCreature))); + if(AI_DEBUG) ai_Debug("0i_talents", "1925", "ai_TryCharging >> 2DA speed is: "+FloatToString(f2DASpeed)+"."); + float fCreatureSpeed = IntToFloat(10 * GetMovementRate(oCreature)); + if(AI_DEBUG) ai_Debug("0i_talents", "1929", "ai_TryCharging >> Creature speed is: "+FloatToString(fCreatureSpeed)+"."); + float fChargeSpeed = (f2DASpeed > fCreatureSpeed) ? f2DASpeed : fCreatureSpeed; + if(AI_DEBUG) ai_Debug("0i_talents", "1929", "ai_TryCharging >> Charge speed is: "+FloatToString(fChargeSpeed)+"."); + //:: If target is too far away to reach in one round, return + if (GetDistanceBetween(oCreature, oTarget) > 2.0 * fChargeSpeed) return FALSE; + if(AI_DEBUG) ai_Debug("0i_talents", "1935", "ai_TryCharging: Distance to Target (far) Check PASSED!"); + //:: If target is too close, return + if (GetDistanceBetween(oCreature, oTarget) < FeetToMeters(11.0)) return FALSE; + if(AI_DEBUG) ai_Debug("0i_talents", "1941", "ai_TryCharging: Distance to Target (near) Check PASSED!"); + //:: Check AB and AC gain/loss + if (!ai_AttackPenaltyOk(oCreature, oTarget, 2.0)) return FALSE; + if(AI_DEBUG) ai_Debug("0i_talents", "1945", "ai_TryCharging: Attack Mod Check PASSED!"); + if (!ai_ACAdjustmentGood(oCreature, oTarget, -2.0)) return FALSE; + if(AI_DEBUG) ai_Debug("0i_talents", "1948", "ai_TryCharging: AC Penalty Check PASSED!"); + //:: Use Charge + ai_UseFeat(oCreature, 2823 /* FEAT_CM_CHARGE */, oTarget); + return TRUE; +} +//:: [PRC8] Tests & runs Grapple +int ai_TryGrappling(object oCreature, object oTarget) +{ + //:: FEAT_CM_GRAPPLE (3414) + //:: FEAT_IMPROVED_GRAPPLE (2804) + //:: FEAT_DEVASTATING_GRAPPLE (4246) + if(!GetHasFeat(3414, oCreature)) return FALSE; + //:: Can't grapple incorporeal or ethereal creatures + if(GetLocalInt(oTarget, "X2_L_IS_INCORPOREAL") || ai_GetHasEffectType(oTarget, EFFECT_TYPE_ETHEREAL)) return FALSE; + //:: Get sizes + int nSizeCreature = GetCreatureSize(oCreature); + int nSizeTarget = GetCreatureSize(oTarget); + //:: Must not be grappling up 2+ size categories + if (nSizeTarget - nSizeCreature >= 2) return FALSE; + //:: Should we attempt a grapple? + if (!ai_CanIGrapple(oCreature, oTarget)) return FALSE; + //:: Use the grapple feat + ai_UseFeat(oCreature, 3414, oTarget); + return TRUE; +} // ***************************************************************************** // ***************************** TALENT SCRIPTS ****************************** // ***************************************************************************** @@ -1595,12 +1997,11 @@ int ai_TryMeleeTalents(object oCreature, object oTarget) int ai_GetMonsterTalentMaxLevel(object oCreature) { - // Monsters should use either the best spell they have or a random spell so - // they all don't look robotic. Mix it up based on an Intelligence check. - int nMaxLevel = (ai_GetCharacterLevels(oCreature) + 1) / 2; - if(nMaxLevel > 9) nMaxLevel = 9; - if(AI_DEBUG) ai_Debug("0i_talents", "1258", "nMaxLevel: " + IntToString(nMaxLevel)); - return nMaxLevel; + return 9; + //int nMaxLevel = (ai_GetCharacterLevels(oCreature) + 1) / 2; + //if(nMaxLevel > 9) nMaxLevel = 9; + //if(AI_DEBUG) ai_Debug("0i_talents", "1258", "nMaxLevel: " + IntToString(nMaxLevel)); + //return nMaxLevel; } int ai_GetAssociateTalentMaxLevel(object oCreature, int nDifficulty) { @@ -1644,10 +2045,8 @@ int ai_GetHasTalent(object oCreature, int nTalent) object ai_CheckTalentForBuffing(object oCreature, string sCategory, int nSpell) { // Should we buff this monster caster? Added legacy code just in case. - if((sCategory == "P" || sCategory == "E" || sCategory == "S") && - (GetLocalInt(GetModule(), AI_RULE_BUFF_MONSTERS) || - GetLocalInt(oCreature, "NW_GENERIC_MASTER") & 0x04000000)) return ai_GetBuffTarget(oCreature, nSpell); - //if(sCategory == "S" && GetLocalInt(GetModule(), AI_RULE_PRESUMMON)) return oCreature; + if(sCategory == "P" || sCategory == "E" || + (sCategory == "S" && GetLocalInt(GetModule(), AI_RULE_PRESUMMON))) return ai_GetBuffTarget(oCreature, nSpell); return OBJECT_INVALID; } int ai_UseBuffTalent(object oCreature, int nClass, int nLevel, int nSlot, int nSpell, int nType, object oTarget, object oItem) @@ -1727,7 +2126,7 @@ int ai_SpellRestricted(int nSpell) } return FALSE; } -void ai_SaveTalent(object oCreature, int nClass, int nJsonLevel, int nLevel, int nSlot, int nSpell, int nType, int bMonster, object oItem = OBJECT_INVALID) +void ai_SaveTalent(object oCreature, int nClass, int nJsonLevel, int nLevel, int nSlot, int nSpell, int nType, int bMonster, int bPreBuff, int bFullBuff, object oItem = OBJECT_INVALID) { // Players/Admins can restrict some spells. if(ai_SpellRestricted(nSpell)) return; @@ -1736,15 +2135,17 @@ void ai_SaveTalent(object oCreature, int nClass, int nJsonLevel, int nLevel, int // If it is a blank talent or it is an Area of Effect talent we skip. if(sCategory == "" || sCategory == "A") return; // Check to see if we should be prebuffing. - if(bMonster) + if(bMonster && bPreBuff) { int nSpellBuffDuration = StringToInt(Get2DAString("ai_spells", "Buff_Duration", nSpell)); - if(nSpellBuffDuration == 3) + if(nSpellBuffDuration == 3 || (nSpellBuffDuration == 2 && bFullBuff)) { - if(AI_DEBUG) ai_Debug("0i_talents", "1600", GetName(oCreature) + " is buffing with spell " + IntToString(nSpell)); object oTarget = ai_CheckTalentForBuffing(oCreature, sCategory, nSpell); - if(oTarget != OBJECT_INVALID && - ai_UseBuffTalent(oCreature, nClass, nLevel, nSlot, nSpell, nType, oTarget, oItem)) return; + if(oTarget != OBJECT_INVALID) + { + if(AI_DEBUG) ai_Debug("0i_talents", "1794", GetName(oCreature) + " is prebuffing with spell " + IntToString(nSpell)); + if(ai_UseBuffTalent(oCreature, nClass, nLevel, nSlot, nSpell, nType, oTarget, oItem)) return; + } } } json jCategory = GetLocalJson(oCreature, sCategory); @@ -1782,35 +2183,110 @@ void ai_SaveTalent(object oCreature, int nClass, int nJsonLevel, int nLevel, int jLevel = JsonArrayInsert(jLevel, jTalent); jCategory = JsonArraySet(jCategory, nJsonLevel, jLevel); SetLocalJson(oCreature, sCategory, jCategory); - if(AI_DEBUG) ai_Debug("0i_talents", "1777", sCategory + ": " + JsonDump(jCategory, 1)); - if(AI_DEBUG) ai_Debug("0i_talents", "1778", "AI_MAX_TALENT: " + - IntToString(GetLocalInt(oCreature, AI_MAX_TALENT + sCategory)) + - " nJsonLevel: " + IntToString(nJsonLevel)); + if(AI_DEBUG) ai_Debug("0i_talents", "1835", sCategory + ": " + JsonDump(jCategory, 1)); // Set AI_MAX_TALENT if this talent is higher than the maximum. if(nJsonLevel > GetLocalInt(oCreature, AI_MAX_TALENT + sCategory)) { SetLocalInt(oCreature, AI_MAX_TALENT + sCategory, nJsonLevel); } + if(AI_DEBUG) ai_Debug("0i_talents", "1841", "AI_MAX_TALENT: " + + IntToString(GetLocalInt(oCreature, AI_MAX_TALENT + sCategory)) + + " nJsonLevel: " + IntToString(nJsonLevel)); } // For removing used up spell slots. void ai_RemoveTalent(object oCreature, json jCategory, json jLevel, string sCategory, int nLevel, int nSlotIndex) { - if(AI_DEBUG) ai_Debug("0i_talents", "1400", "removing Talent from slot: " + IntToString(nSlotIndex)); + if(AI_DEBUG) ai_Debug("0i_talents", "1848", "removing Talent from slot: " + IntToString(nSlotIndex)); jLevel = JsonArrayDel(jLevel, nSlotIndex); - if(AI_DEBUG) ai_Debug("0i_talents", "1402", "jLevel: " + JsonDump(jLevel, 2)); + if(AI_DEBUG) ai_Debug("0i_talents", "1850", "jLevel: " + JsonDump(jLevel, 2)); jCategory = JsonArraySet(jCategory, nLevel, jLevel); - if(AI_DEBUG) ai_Debug("0i_talents", "1404", "jCategory: " + JsonDump(jCategory, 2)); + if(AI_DEBUG) ai_Debug("0i_talents", "1852", "jCategory: " + JsonDump(jCategory, 2)); SetLocalJson(oCreature, sCategory, jCategory); } // For removing Sorcerer/Bard spell levels once used up. void ai_RemoveTalentLevel(object oCreature, json jCategory, json jLevel, string sCategory, int nLevel) { - if(AI_DEBUG) ai_Debug("0i_talents", "1410", "removing Talent level: " + IntToString(nLevel)); + if(AI_DEBUG) ai_Debug("0i_talents", "1858", "removing Talent level: " + IntToString(nLevel)); jCategory = JsonArrayDel(jCategory, nLevel); - if(AI_DEBUG) ai_Debug("0i_talents", "1412", "jCategory: " + JsonDump(jCategory, 2)); + jCategory = JsonArraySet(jCategory, nLevel, JsonArray()); + if(AI_DEBUG) ai_Debug("0i_talents", "1861", "jCategory: " + JsonDump(jCategory, 2)); SetLocalJson(oCreature, sCategory, jCategory); } -void ai_SetCreatureSpellTalents(object oCreature, int bMonster) +/******************************************************************************* + New Set Talents by Level then category. +*******************************************************************************/ +/*void ai_SaveTalentByLevel(object oCreature, int nClass, int nJsonLevel, int nLevel, int nSlot, int nSpell, int nType, int bMonster, int bPreBuff, int bFullBuff, object oItem = OBJECT_INVALID) +{ + // Players/Admins can restrict some spells. + if(ai_SpellRestricted(nSpell)) return; + // Get the talent category, we organize all talents by categories. + string sCategory = Get2DAString("ai_spells", "Category", nSpell); + // If it is a blank talent or it is an Area of Effect talent we skip. + if(sCategory == "" || sCategory == "A") return; + // Check to see if we should be prebuffing. + if(bMonster && bPreBuff) + { + int nSpellBuffDuration = StringToInt(Get2DAString("ai_spells", "Buff_Duration", nSpell)); + if(nSpellBuffDuration == 3 || (nSpellBuffDuration == 2 && bFullBuff)) + { + object oTarget = ai_CheckTalentForBuffing(oCreature, sCategory, nSpell); + if(oTarget != OBJECT_INVALID) + { + if(AI_DEBUG) ai_Debug("0i_talents", "1794", GetName(oCreature) + " is prebuffing with spell " + IntToString(nSpell)); + if(ai_UseBuffTalent(oCreature, nClass, nLevel, nSlot, nSpell, nType, oTarget, oItem)) return; + } + } + } + string sLevel = IntToString(nLevel); + // Get the Level saved to Json. + json jLevel = GetLocalJson(oCreature, "SPELL_LEVEL_" + sLevel); + // If jLevel is not created we set it up. + if(JsonGetType(jLevel) == JSON_TYPE_NULL) jLevel = JsonArray(); + json jTalent = JsonArray(); + if(nType == AI_TALENT_TYPE_SPELL || nType == AI_TALENT_TYPE_SP_ABILITY) + { + jTalent = JsonArrayInsert(jTalent, JsonInt(nType), 0); + jTalent = JsonArrayInsert(jTalent, JsonInt(nSpell)); + jTalent = JsonArrayInsert(jTalent, JsonInt(nClass)); + jTalent = JsonArrayInsert(jTalent, JsonInt(nLevel)); + jTalent = JsonArrayInsert(jTalent, JsonInt(nSlot)); + jTalent = JsonArrayInsert(jTalent, JsonString(sCategory)); + } + else if(nType == AI_TALENT_TYPE_ITEM) + { + jTalent = JsonArrayInsert(jTalent, JsonInt(nType), 0); + jTalent = JsonArrayInsert(jTalent, JsonInt(nSpell)); + jTalent = JsonArrayInsert(jTalent, JsonString(ObjectToString(oItem))); + jTalent = JsonArrayInsert(jTalent, JsonInt(nLevel)); + jTalent = JsonArrayInsert(jTalent, JsonInt(nSlot)); + jTalent = JsonArrayInsert(jTalent, JsonString(sCategory)); + } + jLevel = JsonArrayInsert(jLevel, jTalent); + SetLocalJson(oCreature, "SPELL_LEVEL_" + sLevel, jLevel); + if(AI_DEBUG) ai_Debug("0i_talents", "2265", sLevel + ": " + JsonDump(jLevel, 1)); + // Set AI_MAX_TALENT if this talent is higher than the maximum. + if(nJsonLevel > GetLocalInt(oCreature, AI_MAX_LEVEL + sLevel)) + { + SetLocalInt(oCreature, AI_MAX_LEVEL + sLevel, nJsonLevel); + } + if(AI_DEBUG) ai_Debug("0i_talents", "2271", "AI_MAX_LEVEL: " + + IntToString(GetLocalInt(oCreature, AI_MAX_LEVEL + sLevel)) + + " nJsonLevel: " + IntToString(nJsonLevel)); +} +// For removing used up spell slots. +void ai_RemoveTalentByLevel(object oCreature, json jLevel, int nLevel, int nSlotIndex) +{ + if(AI_DEBUG) ai_Debug("0i_talents", "2278", "removing Talent from slot: " + IntToString(nSlotIndex)); + jLevel = JsonArrayDel(jLevel, nSlotIndex); + if(AI_DEBUG) ai_Debug("0i_talents", "2280", "jLevel: " + JsonDump(jLevel, 2)); + SetLocalJson(oCreature, "SPELL_LEVEL_" + IntToString(nLevel), jLevel); +} +// For removing Sorcerer/Bard spell levels once used up. +void ai_RemoveTalentLevelByLevel(object oCreature, int nLevel) +{ + DeleteLocalJson(oCreature, "SPELL_LEVEL_" + IntToString(nLevel)); +} +void ai_SetCreatureSpellTalentsByLevel(object oCreature, int bMonster, int bPreBuff, int bFullBuff) { if(AI_DEBUG) ai_Debug("0i_talents", "1417", GetName(oCreature) + ": Setting Spell Talents for combat [Buff: " + IntToString(bMonster) + "]."); @@ -1862,8 +2338,8 @@ void ai_SetCreatureSpellTalents(object oCreature, int bMonster) nAdjLevel = nLevel + nMetaMagic; if(nAdjLevel > 9) nAdjLevel = 9; } - else nAdjLevel = nLevel; */ - ai_SaveTalent(oCreature, nClass, nLevel, nLevel, nSlot, nSpell, AI_TALENT_TYPE_SPELL, bMonster); + else nAdjLevel = nLevel; + ai_SaveTalentByLevel(oCreature, nClass, nLevel, nLevel, nSlot, nSpell, AI_TALENT_TYPE_SPELL, bMonster, bPreBuff, bFullBuff); } nSlot++; } @@ -1892,7 +2368,7 @@ void ai_SetCreatureSpellTalents(object oCreature, int bMonster) IntToString(GetSpellUsesLeft(oCreature, nClass, nSpell))); if(GetSpellUsesLeft(oCreature, nClass, nSpell) > 0) { - ai_SaveTalent(oCreature, nClass, nLevel, nLevel, nSlot, nSpell, AI_TALENT_TYPE_SPELL, bMonster); + ai_SaveTalentByLevel(oCreature, nClass, nLevel, nLevel, nSlot, nSpell, AI_TALENT_TYPE_SPELL, bMonster, bPreBuff, bFullBuff); } nSlot++; } @@ -1904,12 +2380,12 @@ void ai_SetCreatureSpellTalents(object oCreature, int bMonster) nClass = GetClassByPosition(nClassPosition, oCreature); } } -void ai_SetCreatureSpecialAbilityTalents(object oCreature, int bMonster) +void ai_SetCreatureSpecialAbilityTalentsByLevel(object oCreature, int bMonster, int bPreBuff, int bFullBuff) { if(AI_DEBUG) ai_Debug("0i_talents", "1488", GetName(oCreature) + ": Setting Special Ability Talents for combat."); // Cycle through all the creatures special abilities. int nMaxSpecialAbilities = GetSpellAbilityCount(oCreature); - if(AI_DEBUG) ai_Debug("0i_talents", "1491", IntToString(GetSpellAbilityCount(oCreature)) + " Spell abilities."); + if(AI_DEBUG) ai_Debug("0i_talents", "1491", IntToString(nMaxSpecialAbilities) + " Spell abilities."); if(nMaxSpecialAbilities) { int nIndex, nSpell, nLevel; @@ -1919,13 +2395,13 @@ void ai_SetCreatureSpecialAbilityTalents(object oCreature, int bMonster) if(GetSpellAbilityReady(oCreature, nSpell)) { nLevel = StringToInt(Get2DAString("spells", "Innate", nSpell)); - ai_SaveTalent(oCreature, 255, nLevel, nLevel, nIndex, nSpell, AI_TALENT_TYPE_SP_ABILITY, bMonster); + ai_SaveTalentByLevel(oCreature, 255, nLevel, nLevel, nIndex, nSpell, AI_TALENT_TYPE_SP_ABILITY, bMonster, bPreBuff, bFullBuff); } nIndex++; } } } -void ai_CheckItemProperties(object oCreature, object oItem, int bMonster, int bEquiped = FALSE) +void ai_CheckItemPropertiesByLevel(object oCreature, object oItem, int bMonster, int bPreBuff, int bFullBuff, int bEquiped = FALSE) { if(AI_DEBUG) ai_Debug("0i_talents", "1509", "Checking Item properties on " + GetName(oItem)); // We have established that we can use the item if it is equiped. @@ -1971,7 +2447,7 @@ void ai_CheckItemProperties(object oCreature, object oItem, int bMonster, int bE nIprpSubType = GetItemPropertySubType(ipProp); nSpell = StringToInt(Get2DAString("iprp_spells", "SpellIndex", nIprpSubType)); nLevel = StringToInt(Get2DAString("iprp_spells", "InnateLvl", nIprpSubType)); - ai_SaveTalent(oCreature, 255, nLevel, nLevel, nIndex, nSpell, AI_TALENT_TYPE_ITEM, bMonster, oItem); + ai_SaveTalentByLevel(oCreature, 255, nLevel, nLevel, nIndex, nSpell, AI_TALENT_TYPE_ITEM, bMonster, bPreBuff, bFullBuff, oItem); } } else if(nIPType == ITEM_PROPERTY_HEALERS_KIT) @@ -1982,7 +2458,7 @@ void ai_CheckItemProperties(object oCreature, object oItem, int bMonster, int bE // Must also have ranks in healing kits. if(GetSkillRank(SKILL_HEAL, oCreature) > 0) { - ai_SaveTalent(oCreature, 255, 7, 0, nIndex, nSpell, AI_TALENT_TYPE_ITEM, bMonster, oItem); + ai_SaveTalent(oCreature, 255, 7, 0, nIndex, nSpell, AI_TALENT_TYPE_ITEM, bMonster, bPreBuff, bFullBuff, oItem); } } if(bEquiped) @@ -2043,13 +2519,15 @@ void ai_CheckItemProperties(object oCreature, object oItem, int bMonster, int bE nIndex++; ipProp = GetNextItemProperty(oItem); } - // If nSpellImmunity has been set then we need to save our Immunity json. + // If any Immunity has been set then we need to save our Immunity json. if(bHasItemImmunity) SetLocalJson(oCreature, AI_TALENT_IMMUNITY, jImmunity); } -void ai_SetCreatureItemTalents(object oCreature, int bMonster) +void ai_SetCreatureItemTalentsByLevel(object oCreature, int bMonster, int bPreBuff, int bFullBuff) { if(AI_DEBUG) ai_Debug("0i_talents", "1561", GetName(oCreature) + ": Setting Item Talents for combat."); int bEquiped; + // Set the Immunities to -1 so we know they were set incase there are no immunities. + SetLocalInt(oCreature, sIPReducedVarname, -1); string sSlots; // Cycle through all the creatures inventory items. object oItem = GetFirstItemInInventory(oCreature); @@ -2060,7 +2538,7 @@ void ai_SetCreatureItemTalents(object oCreature, int bMonster) // Does the item need to be equiped to use its powers? sSlots = Get2DAString("baseitems", "EquipableSlots", GetBaseItemType(oItem)); if(AI_DEBUG) ai_Debug("0i_talents", "1572", GetName(oItem) + " requires " + Get2DAString("baseitems", "EquipableSlots", GetBaseItemType(oItem)) + " slots."); - if(sSlots == "0x00000") ai_CheckItemProperties(oCreature, oItem, bMonster); + if(sSlots == "0x00000") ai_CheckItemPropertiesByLevel(oCreature, oItem, bMonster, bPreBuff, bFullBuff); } oItem = GetNextItemInInventory(oCreature); } @@ -2069,28 +2547,331 @@ void ai_SetCreatureItemTalents(object oCreature, int bMonster) oItem = GetItemInSlot(nSlot, oCreature); while(nSlot < 11) { - if(oItem != OBJECT_INVALID) ai_CheckItemProperties(oCreature, oItem, bMonster, TRUE); + if(oItem != OBJECT_INVALID) ai_CheckItemPropertiesByLevel(oCreature, oItem, bMonster, bPreBuff, bFullBuff, TRUE); oItem = GetItemInSlot(++nSlot, oCreature); } oItem = GetItemInSlot(INVENTORY_SLOT_CARMOUR, oCreature); - if(oItem != OBJECT_INVALID) ai_CheckItemProperties(oCreature, oItem, bMonster, TRUE); + if(oItem != OBJECT_INVALID) ai_CheckItemPropertiesByLevel(oCreature, oItem, bMonster, bPreBuff, bFullBuff, TRUE); } -void ai_SetCreatureTalents(object oCreature, int bMonster) +void ai_SetCreatureTalentsByLevel(object oCreature, int bMonster, int bForceTalentSetup = FALSE) { - json jCreature = ObjectToJson(oCreature); + //json jCreature = ObjectToJson(oCreature); //if(AI_DEBUG) ai_Debug("0i_talents", "2072", GetName(oCreature) + " jCreature: " + JsonDump(jCreature, 4)); - if(GetLocalInt(oCreature, AI_TALENTS_SET)) return; + if(GetLocalInt(oCreature, AI_TALENTS_SET) && !bForceTalentSetup) return; SetLocalInt(oCreature, AI_TALENTS_SET, TRUE); object oModule = GetModule(); + int bPreBuff = GetLocalInt(GetModule(), AI_RULE_BUFF_MONSTERS) || (GetLocalInt(oCreature, "NW_GENERIC_MASTER") & 0x04000000); + int bFullBuff = GetLocalInt(GetModule(), AI_RULE_FULL_BUFF_MONSTERS); + if(bForceTalentSetup) bPreBuff = FALSE; ai_Counter_Start(); - ai_SetCreatureSpellTalents(oCreature, bMonster); + ai_SetCreatureSpellTalentsByLevel(oCreature, bMonster, bPreBuff, bFullBuff); ai_Counter_End(GetName(oCreature) + ": Spell Talents"); - ai_SetCreatureSpecialAbilityTalents(oCreature, bMonster); + ai_SetCreatureSpecialAbilityTalentsByLevel(oCreature, bMonster, bPreBuff, bFullBuff); ai_Counter_End(GetName(oCreature) + ": Special Ability Talents"); DeleteLocalJson(oCreature, AI_TALENT_IMMUNITY); - ai_SetCreatureItemTalents(oCreature, bMonster); + ai_SetCreatureItemTalentsByLevel(oCreature, bMonster, bPreBuff, bFullBuff); ai_Counter_End(GetName(oCreature) + ": Item Talents"); - if(GetLocalInt(oModule, AI_RULE_SUMMON_COMPANIONS) && GetLocalInt(oModule, AI_RULE_PRESUMMON) && bMonster) + if(GetLocalInt(oModule, AI_RULE_SUMMON_COMPANIONS) && + GetLocalInt(oModule, AI_RULE_PRESUMMON) && bMonster && bPreBuff) + { + ai_TrySummonFamiliarTalent(oCreature); + ai_TrySummonAnimalCompanionTalent(oCreature); + } + // AI_CAT_CURE is setup differently we save the level as the highest. + //if(JsonGetType(GetLocalJson(oCreature, AI_TALENT_CURE)) != JSON_TYPE_NULL) SetLocalInt(oCreature, AI_MAX_TALENT + AI_TALENT_CURE, 9); + // With spontaneous cure spells we need to clear this as the number of spells don't count. + //if(GetLevelByClass(CLASS_TYPE_CLERIC, oCreature)) SetLocalInt(oCreature, AI_MAX_TALENT + AI_TALENT_HEALING, 0); +} */ +/******************************************************************************* + Old Set talents by category then level. +*******************************************************************************/ +void ai_SetCreatureSpellTalents(object oCreature, int bMonster, int bPreBuff, int bFullBuff) +{ + if(AI_DEBUG) ai_Debug("0i_talents", "1417", GetName(oCreature) + ": Setting Spell Talents for combat [Buff: " + + IntToString(bMonster) + "]."); + // Cycle through all classes and spells. + int nClassPosition = 1, nMaxSlot, nLevel, nSlot, nSpell, nIndex, nMetaMagic; + int nClass = GetClassByPosition(nClassPosition, oCreature); + while(nClassPosition <= AI_MAX_CLASSES_PER_CHARACTER && nClass != CLASS_TYPE_INVALID) + { + if(AI_DEBUG) ai_Debug("0i_talents", "1824", "nClass: " + IntToString(nClass) + + " nClassPosition: " + IntToString(nClassPosition) + + " SpellCaster: " + Get2DAString("classes", "SpellCaster", nClass) + + " Memorized: " + Get2DAString("classes", "MemorizesSpells", nClass)); + if(Get2DAString("classes", "SpellCaster", nClass) == "1") + { + // Search all memorized spells for the spell. + if(Get2DAString("classes", "MemorizesSpells", nClass) == "1") + { + // Check each level organizing from highest to lowest. + nLevel = (GetLevelByPosition(nClassPosition, oCreature) + 1) / 2; + if(nLevel > 9) nLevel = 9; + while(nLevel > -1) + { + // Check each slot within each level. + nMaxSlot = GetMemorizedSpellCountByLevel(oCreature, nClass, nLevel); + if(AI_DEBUG) ai_Debug("0i_talents", "1434", "nClass: " + IntToString(nClass) + + " nLevel: " + IntToString(nLevel) + " nMaxSlot: " + + IntToString(nMaxSlot)); + nSlot = 0; + while(nSlot < nMaxSlot) + { + if(AI_DEBUG) ai_Debug("0i_talents", "1440", "nSlot: " + IntToString(nSlot) + " nSpell: " + + IntToString(GetMemorizedSpellId(oCreature, nClass, nLevel, nSlot)) + " spell memorized: " + + IntToString(GetMemorizedSpellReady(oCreature, nClass, nLevel, nSlot))); + if(GetMemorizedSpellReady(oCreature, nClass, nLevel, nSlot) == 1) + { + nSpell = GetMemorizedSpellId(oCreature, nClass, nLevel, nSlot); + /* Spells are already at the higher level when saved as a talent. + // Move a spell up to a different JsonLevel as higher Jsonlevel + // spells usually get cast first. + nMetaMagic = GetMemorizedSpellMetaMagic(oCreature, nClass, nLevel, nSlot); + if(nMetaMagic > 0) + { + if(nMetaMagic == METAMAGIC_STILL) nMetaMagic = 1; + else if(nMetaMagic == METAMAGIC_EXTEND) nMetaMagic = 1; + else if(nMetaMagic == METAMAGIC_SILENT) nMetaMagic = 1; + else if(nMetaMagic == METAMAGIC_EMPOWER) nMetaMagic = 2; + else if(nMetaMagic == METAMAGIC_MAXIMIZE) nMetaMagic = 3; + else if(nMetaMagic == METAMAGIC_QUICKEN) nMetaMagic = 4; + nAdjLevel = nLevel + nMetaMagic; + if(nAdjLevel > 9) nAdjLevel = 9; + } + else nAdjLevel = nLevel; */ + ai_SaveTalent(oCreature, nClass, nLevel, nLevel, nSlot, nSpell, AI_TALENT_TYPE_SPELL, bMonster, bPreBuff, bFullBuff); + } + nSlot++; + } + nLevel--; + } + } + // Check non-memorized known lists for the spell. + else + { + // Check each level starting with the highest to lowest. + nLevel = (GetLevelByPosition(nClassPosition, oCreature) + 1) / 2; + if(nLevel > 9) nLevel = 9; + while(nLevel > -1) + { + // Check each slot within each level. + nMaxSlot = GetKnownSpellCount(oCreature, nClass, nLevel); + if(AI_DEBUG) ai_Debug("0i_talents", "1462", "nClass: " + IntToString(nClass) + + " nLevel: " + IntToString(nLevel) + " nMaxSlot: " + + IntToString(nMaxSlot)); + nSlot = 0; + while(nSlot < nMaxSlot) + { + nSpell = GetKnownSpellId(oCreature, nClass, nLevel, nSlot); + if(AI_DEBUG) ai_Debug("0i_talents", "1469", "nSlot: " + IntToString(nSlot) + + " nSpell: " + IntToString(nSpell) + " nUsesLeft: " + + IntToString(GetSpellUsesLeft(oCreature, nClass, nSpell))); + if(GetSpellUsesLeft(oCreature, nClass, nSpell) > 0) + { + ai_SaveTalent(oCreature, nClass, nLevel, nLevel, nSlot, nSpell, AI_TALENT_TYPE_SPELL, bMonster, bPreBuff, bFullBuff); + } + nSlot++; + } + nLevel--; + } + } + } + nClassPosition++; + nClass = GetClassByPosition(nClassPosition, oCreature); + } +} +void ai_SetCreatureSpecialAbilityTalents(object oCreature, int bMonster, int bPreBuff, int bFullBuff) +{ + if(AI_DEBUG) ai_Debug("0i_talents", "1488", GetName(oCreature) + ": Setting Special Ability Talents for combat."); + // Cycle through all the creatures special abilities. + int nMaxSpecialAbilities = GetSpellAbilityCount(oCreature); + if(AI_DEBUG) ai_Debug("0i_talents", "1491", IntToString(nMaxSpecialAbilities) + " Spell abilities."); + if(nMaxSpecialAbilities) + { + int nIndex, nSpell, nLevel; + while(nIndex < nMaxSpecialAbilities) + { + nSpell = GetSpellAbilitySpell(oCreature, nIndex); + if(GetSpellAbilityReady(oCreature, nSpell)) + { + nLevel = StringToInt(Get2DAString("spells", "Innate", nSpell)); + ai_SaveTalent(oCreature, 255, nLevel, nLevel, nIndex, nSpell, AI_TALENT_TYPE_SP_ABILITY, bMonster, bPreBuff, bFullBuff); + } + nIndex++; + } + } +} +void ai_CheckItemProperties(object oCreature, object oItem, int bMonster, int bPreBuff, int bFullBuff, int bEquiped = FALSE) +{ + if(AI_DEBUG) ai_Debug("0i_talents", "1509", "Checking Item properties on " + GetName(oItem)); + // We have established that we can use the item if it is equiped. + if(!bEquiped && !ai_CheckIfCanUseItem(oCreature, oItem)) return; + // Get or create an Immunity in json so we can check item immunities quickly. + int nSpellImmunity, bHasItemImmunity, nPerDay, nCharges, nUses, bSaveTalent; + json jImmunity = GetLocalJson(oCreature, AI_TALENT_IMMUNITY); + if(JsonGetType(jImmunity) == JSON_TYPE_NULL) jImmunity = JsonArray(); + int nIprpSubType, nSpell, nLevel, nIPType, nIndex; + itemproperty ipProp = GetFirstItemProperty(oItem); + // Lets skip this if there are no properties. + if(!GetIsItemPropertyValid(ipProp)) return; + // Check for cast spell property and add them to the talent list. + while(GetIsItemPropertyValid(ipProp)) + { + nIPType = GetItemPropertyType(ipProp); + if(AI_DEBUG) ai_Debug("0i_talents", "1895", "ItempropertyType(15/80/53): " + IntToString(nIPType)); + if(nIPType == ITEM_PROPERTY_CAST_SPELL) + { + bSaveTalent = TRUE; + // Get how they use the item (charges or uses per day). + nUses = GetItemPropertyCostTableValue(ipProp); + if(nUses > 1 && nUses < 7) + { + nCharges = GetItemCharges(oItem); + if(AI_DEBUG) ai_Debug("0i_talents", "1530", "Charges per use: " + IntToString(nUses) + + " Item charges: " + IntToString(nCharges)); + if((nUses == IP_CONST_CASTSPELL_NUMUSES_1_CHARGE_PER_USE && nCharges < 1) || + (nUses == IP_CONST_CASTSPELL_NUMUSES_2_CHARGES_PER_USE && nCharges < 2) || + (nUses == IP_CONST_CASTSPELL_NUMUSES_3_CHARGES_PER_USE && nCharges < 3) || + (nUses == IP_CONST_CASTSPELL_NUMUSES_4_CHARGES_PER_USE && nCharges < 4) || + (nUses == IP_CONST_CASTSPELL_NUMUSES_5_CHARGES_PER_USE && nCharges < 5)) bSaveTalent = FALSE; + } + else if(nUses > 7 && nUses < 13) + { + nPerDay = GetItemPropertyUsesPerDayRemaining(oItem, ipProp); + if(AI_DEBUG) ai_Debug("0i_talents", "1676", "Item uses: " + IntToString(nPerDay)); + if(nPerDay == 0) bSaveTalent = FALSE; + } + if(bSaveTalent) + { + // SubType is the ip spell index for iprp_spells.2da + nIprpSubType = GetItemPropertySubType(ipProp); + nSpell = StringToInt(Get2DAString("iprp_spells", "SpellIndex", nIprpSubType)); + nLevel = StringToInt(Get2DAString("iprp_spells", "InnateLvl", nIprpSubType)); + ai_SaveTalent(oCreature, 255, nLevel, nLevel, nIndex, nSpell, AI_TALENT_TYPE_ITEM, bMonster, bPreBuff, bFullBuff, oItem); + } + } + else if(nIPType == ITEM_PROPERTY_HEALERS_KIT) + { + // Lets set Healing kits as Cure Light Wounds since they heal 1d20 in combat. + nSpell = SPELL_CURE_MINOR_WOUNDS; + // Save the healer kit as level 9 so we can use them first. + // Must also have ranks in healing kits. + if(GetSkillRank(SKILL_HEAL, oCreature) > 0) + { + ai_SaveTalent(oCreature, 255, 7, 0, nIndex, nSpell, AI_TALENT_TYPE_ITEM, bMonster, bPreBuff, bFullBuff, oItem); + } + } + if(bEquiped) + { + if(nIPType == ITEM_PROPERTY_IMMUNITY_SPECIFIC_SPELL) + { + bHasItemImmunity = TRUE; + nSpellImmunity = GetItemPropertyCostTableValue(ipProp); + nSpellImmunity = StringToInt(Get2DAString("iprp_spellcost", "SpellIndex", nSpellImmunity)); + //if(AI_DEBUG) ai_Debug("0i_talents", "1950", "SpellImmunity to " + Get2DAString("spells", "Label", nSpellImmunity)); + jImmunity = JsonArrayInsert(jImmunity, JsonInt(nSpellImmunity)); + } + else if(nIPType == ITEM_PROPERTY_HASTE) + { + SetLocalInt(oCreature, sIPHasHasteVarname, TRUE); + } + else if(nIPType == ITEM_PROPERTY_IMMUNITY_DAMAGE_TYPE) + { + int nBit, nIpSubType = GetItemPropertySubType(ipProp); + if(AI_DEBUG) ai_Debug("0i_talents", "1957", "nIPSubType: " + IntToString(nIpSubType)); + if(nIpSubType == 0) nBit = DAMAGE_TYPE_BLUDGEONING; + else if(nIpSubType == 1) nBit = DAMAGE_TYPE_PIERCING; + else if(nIpSubType == 2) nBit = DAMAGE_TYPE_SLASHING; + else if(nIpSubType == 5) nBit = DAMAGE_TYPE_MAGICAL; + else if(nIpSubType == 6) nBit = DAMAGE_TYPE_ACID; + else if(nIpSubType == 7) nBit = DAMAGE_TYPE_COLD; + else if(nIpSubType == 8) nBit = DAMAGE_TYPE_DIVINE; + else if(nIpSubType == 9) nBit = DAMAGE_TYPE_ELECTRICAL; + else if(nIpSubType == 10) nBit = DAMAGE_TYPE_FIRE; + else if(nIpSubType == 11) nBit = DAMAGE_TYPE_NEGATIVE; + else if(nIpSubType == 12) nBit = DAMAGE_TYPE_POSITIVE; + else if(nIpSubType == 13) nBit = DAMAGE_TYPE_SONIC; + if(nBit > 0) ai_SetItemProperty(oCreature, sIPImmuneVarname, nBit, TRUE); + } + else if(nIPType == ITEM_PROPERTY_DAMAGE_RESISTANCE) + { + int nBit, nIpSubType = GetItemPropertySubType(ipProp); + if(nIpSubType == 0) nBit = DAMAGE_TYPE_BLUDGEONING; + else if(nIpSubType == 1) nBit = DAMAGE_TYPE_PIERCING; + else if(nIpSubType == 2) nBit = DAMAGE_TYPE_SLASHING; + else if(nIpSubType == 5) nBit = DAMAGE_TYPE_MAGICAL; + else if(nIpSubType == 6) nBit = DAMAGE_TYPE_ACID; + else if(nIpSubType == 7) nBit = DAMAGE_TYPE_COLD; + else if(nIpSubType == 8) nBit = DAMAGE_TYPE_DIVINE; + else if(nIpSubType == 9) nBit = DAMAGE_TYPE_ELECTRICAL; + else if(nIpSubType == 10) nBit = DAMAGE_TYPE_FIRE; + else if(nIpSubType == 11) nBit = DAMAGE_TYPE_NEGATIVE; + else if(nIpSubType == 12) nBit = DAMAGE_TYPE_POSITIVE; + else if(nIpSubType == 13) nBit = DAMAGE_TYPE_SONIC; + if(nBit > 0) ai_SetItemProperty(oCreature, sIPResistVarname, nBit, TRUE); + } + else if(nIPType == ITEM_PROPERTY_DAMAGE_REDUCTION) + { + int nIpSubType = GetItemPropertySubType(ipProp); + SetLocalInt(oCreature, sIPReducedVarname, nIpSubType); + } + } + nIndex++; + ipProp = GetNextItemProperty(oItem); + } + // If any Immunity has been set then we need to save our Immunity json. + if(bHasItemImmunity) SetLocalJson(oCreature, AI_TALENT_IMMUNITY, jImmunity); +} +void ai_SetCreatureItemTalents(object oCreature, int bMonster, int bPreBuff, int bFullBuff) +{ + if(AI_DEBUG) ai_Debug("0i_talents", "1561", GetName(oCreature) + ": Setting Item Talents for combat."); + int bEquiped; + // Set the Immunities to -1 so we know they were set incase there are no immunities. + SetLocalInt(oCreature, sIPReducedVarname, -1); + string sSlots; + // Cycle through all the creatures inventory items. + object oItem = GetFirstItemInInventory(oCreature); + while(oItem != OBJECT_INVALID) + { + if(GetIdentified(oItem)) + { + // Does the item need to be equiped to use its powers? + sSlots = Get2DAString("baseitems", "EquipableSlots", GetBaseItemType(oItem)); + if(AI_DEBUG) ai_Debug("0i_talents", "1572", GetName(oItem) + " requires " + Get2DAString("baseitems", "EquipableSlots", GetBaseItemType(oItem)) + " slots."); + if(sSlots == "0x00000") ai_CheckItemProperties(oCreature, oItem, bMonster, bPreBuff, bFullBuff); + } + oItem = GetNextItemInInventory(oCreature); + } + int nSlot; + // Cycle through all the creatures equiped items. + oItem = GetItemInSlot(nSlot, oCreature); + while(nSlot < 11) + { + if(oItem != OBJECT_INVALID) ai_CheckItemProperties(oCreature, oItem, bMonster, bPreBuff, bFullBuff, TRUE); + oItem = GetItemInSlot(++nSlot, oCreature); + } + oItem = GetItemInSlot(INVENTORY_SLOT_CARMOUR, oCreature); + if(oItem != OBJECT_INVALID) ai_CheckItemProperties(oCreature, oItem, bMonster, bPreBuff, bFullBuff, TRUE); +} +void ai_SetCreatureTalents(object oCreature, int bMonster, int bForceTalentSetup = FALSE) +{ + //json jCreature = ObjectToJson(oCreature); + //if(AI_DEBUG) ai_Debug("0i_talents", "2072", GetName(oCreature) + " jCreature: " + JsonDump(jCreature, 4)); + if(GetLocalInt(oCreature, AI_TALENTS_SET) && !bForceTalentSetup) return; + SetLocalInt(oCreature, AI_TALENTS_SET, TRUE); + object oModule = GetModule(); + int bPreBuff = GetLocalInt(GetModule(), AI_RULE_BUFF_MONSTERS) || (GetLocalInt(oCreature, "NW_GENERIC_MASTER") & 0x04000000); + int bFullBuff = GetLocalInt(GetModule(), AI_RULE_FULL_BUFF_MONSTERS); + if(bForceTalentSetup) bPreBuff = FALSE; + ai_Counter_Start(); + ai_SetCreatureSpellTalents(oCreature, bMonster, bPreBuff, bFullBuff); + ai_Counter_End(GetName(oCreature) + ": Spell Talents"); + ai_SetCreatureSpecialAbilityTalents(oCreature, bMonster, bPreBuff, bFullBuff); + ai_Counter_End(GetName(oCreature) + ": Special Ability Talents"); + DeleteLocalJson(oCreature, AI_TALENT_IMMUNITY); + ai_SetCreatureItemTalents(oCreature, bMonster, bPreBuff, bFullBuff); + ai_Counter_End(GetName(oCreature) + ": Item Talents"); + if(GetLocalInt(oModule, AI_RULE_SUMMON_COMPANIONS) && + GetLocalInt(oModule, AI_RULE_PRESUMMON) && bMonster && bPreBuff) { ai_TrySummonFamiliarTalent(oCreature); ai_TrySummonAnimalCompanionTalent(oCreature); @@ -2216,20 +2997,6 @@ int ai_UseCreatureSpellTalent(object oCreature, json jLevel, json jTalent, strin } } if(ai_ArcaneSpellFailureTooHigh(oCreature, nClass, nLevel, nSlot)) return FALSE; - if(Get2DAString("classes", "MemorizesSpells", nClass) == "1") - { - // Shouldn't need this anymore, we need to do a debug looking at this. - if(GetMemorizedSpellReady(oCreature, nClass, nLevel, nSlot) < 1) return FALSE; - if(ai_CheckSpecialTalentsandUse(oCreature, jTalent, sCategory, nInMelee, oTarget)) - { - if(ai_CompareLastAction(oCreature, AI_LAST_ACTION_CAST_SPELL)) return -1; - return TRUE; - } - return FALSE; - } - if(AI_DEBUG) ai_Debug("0i_talents", "1629", "Known caster Level: " + IntToString(nLevel) + - " Uses : " + IntToString(GetSpellUsesLeft(oCreature, nClass, JsonGetInt(JsonArrayGet(jTalent, 1))))); - if(!GetSpellUsesLeft(oCreature, nClass, JsonGetInt(JsonArrayGet(jTalent, 1)))) return -2; return ai_CheckSpecialTalentsandUse(oCreature, jTalent, sCategory, nInMelee, oTarget); } int ai_UseCreatureItemTalent(object oCreature, json jLevel, json jTalent, string sCategory, int nInMelee, object oTarget = OBJECT_INVALID) @@ -2270,43 +3037,68 @@ int ai_UseCreatureItemTalent(object oCreature, json jLevel, json jTalent, string if(ai_CheckSpecialTalentsandUse(oCreature, jTalent, sCategory, nInMelee, oTarget)) return TRUE; return FALSE; } -int ai_UseCreatureTalent(object oCreature, string sCategory, int nInMelee, int nLevel = 10, object oTarget = OBJECT_INVALID) +void ai_UpdateMaxTalentLevel(object oCreature, json jCategory, string sCategory, int nMaxTalentLevel, int nLevel) { - // Get the saved category from oCreature. - json jCategory = GetLocalJson(oCreature, sCategory); - if(AI_DEBUG) ai_Debug("0i_talents", "2292", "jCategory: " + sCategory + " " + JsonDump(jCategory, 2)); - if(JsonGetType(jCategory) == JSON_TYPE_NULL) return FALSE; - // If there are no talents at lower levels then start at the lower level. - int nMaxTalentLevel = GetLocalInt(oCreature, AI_MAX_TALENT + sCategory); - if(AI_DEBUG) ai_Debug("0i_talents", "2297", AI_MAX_TALENT + sCategory + ": " + + // We only reduce the MaxTalentLevel if this is the top most talent level. + if(nMaxTalentLevel == nLevel) + { + json jLevel = JsonArrayGet(jCategory, --nLevel); + if(AI_DEBUG) ai_Debug("0i_talents", "2331", "jLevel length: " + IntToString(JsonGetLength(jLevel))); + while(JsonGetLength(jLevel) == 0 && nLevel > -1) + { + jLevel = JsonArrayGet(jCategory, --nLevel); + } + if(AI_DEBUG) ai_Debug("0i_talents", "2335", "Setting AI_MAX_TALENT_" + sCategory + " to " + IntToString(nLevel)); + SetLocalInt(oCreature, AI_MAX_TALENT + sCategory, nLevel); + } +} +/******************************************************************************* + New talent system that checks by level then category. +*******************************************************************************/ +/*int ai_UseCreatureTalentByLevel(object oCreature, int nInMelee, int nLevel = 10, object oTarget = OBJECT_INVALID) +{ + string sLevel = IntToString(nLevel); + // Get the Max Talent Level to see if we even need to pull this talent. + int nMaxTalentLevel = GetLocalInt(oCreature, AI_MAX_LEVEL + sLevel); + if(AI_DEBUG) ai_Debug("0i_talents", "2394", AI_MAX_LEVEL + sLevel + ": " + IntToString(nMaxTalentLevel) + " nLevel: " + IntToString(nLevel)); + if(nMaxTalentLevel == -1) return FALSE; + // If there are no talents at higher levels then start at the lowest talent level. if(nMaxTalentLevel < nLevel) nLevel = nMaxTalentLevel; if(nLevel < 0 || nLevel > 10) nLevel = 9; - json jLevel, jTalent; - int nClass, nSlot, nType, nSlotIndex, nMaxSlotIndex, nTalentUsed, nSpell; + json jTalent; + int bHasTalent, nClass, nSlot, nType, nSlotIndex, nMaxSlotIndex, nTalentUsed, nSpell; int bUseMagic = !ai_GetMagicMode(oCreature, AI_MAGIC_NO_MAGIC); int bUseMagicItems = !ai_GetMagicMode(oCreature, AI_MAGIC_NO_MAGIC_ITEMS); - if(AI_DEBUG) ai_Debug("0i_talents", "2305", "bUseMagic: " + IntToString(bUseMagic) + - " bUseMagicItems: " + IntToString(bUseMagicItems) + - " nLevel: " + IntToString(nLevel)); - // Loop through nLevels down to nMinNoTalentLevel looking for the first talent - // (i.e. the highest or best?). + if(AI_DEBUG) ai_Debug("0i_talents", "2413", "bUseMagic: " + IntToString(bUseMagic) + + " bUseMagicItems: " + IntToString(bUseMagicItems)); + // Loop through nLevels starting at the highest then going to the lowest. + // (i.e. the highest or best is our assumption). + // Get the saved level from oCreature. + json jLevel = GetLocalJson(oCreature, "SPELL_LEVEL_" + IntToString(nLevel)); + if(AI_DEBUG) ai_Debug("0i_talents", "3091", "jLevel: " + IntToString(nLevel) + " " + JsonDump(jLevel, 2)); + if(JsonGetType(jCategory) == JSON_TYPE_NULL) + { + SetLocalInt(oCreature, AI_MAX_LEVEL + sCategory, -1); + return FALSE; + } while(nLevel > -1) { // Get the array of nLevel cycling down to 0. jLevel = JsonArrayGet(jCategory, nLevel); nMaxSlotIndex = JsonGetLength(jLevel); - if(AI_DEBUG) ai_Debug("0i_talents", "2288", "nLevel: " + IntToString(nLevel) + + if(AI_DEBUG) ai_Debug("0i_talents", "2422", "Level: " + IntToString(nLevel) + " nMaxSlotIndex: " + IntToString(nMaxSlotIndex)); if(nMaxSlotIndex > 0) { + bHasTalent = TRUE; // Get the talent within nLevel cycling from the first to the last. nSlotIndex = 0; while (nSlotIndex < nMaxSlotIndex) { jTalent= JsonArrayGet(jLevel, nSlotIndex); - if(AI_DEBUG) ai_Debug("0i_talents", "2300", "nSlotIndex: " + IntToString(nSlotIndex) + + if(AI_DEBUG) ai_Debug("0i_talents", "2432", "nSlotIndex: " + IntToString(nSlotIndex) + " jTalent Type: " + IntToString(JsonGetInt(JsonArrayGet(jTalent, 0)))); nType = JsonGetInt(JsonArrayGet(jTalent, 0)); if(bUseMagic) @@ -2318,11 +3110,14 @@ int ai_UseCreatureTalent(object oCreature, string sCategory, int nInMelee, int n if(nTalentUsed == -1) { ai_RemoveTalent(oCreature, jCategory, jLevel, sCategory, nLevel, nSlotIndex); + if(nMaxSlotIndex == 1) ai_UpdateMaxTalentLevel(oCreature, jCategory, sCategory, nMaxTalentLevel, nLevel); return TRUE; } + // There are no more spell slots left for non-memorizing caster so remove the level. else if(nTalentUsed == -2) { ai_RemoveTalentLevel(oCreature, jCategory, jLevel, sCategory, nLevel); + if(nMaxSlotIndex == 1) ai_UpdateMaxTalentLevel(oCreature, jCategory, sCategory, nMaxTalentLevel, nLevel); } else if(nTalentUsed) return TRUE; } @@ -2334,6 +3129,7 @@ int ai_UseCreatureTalent(object oCreature, string sCategory, int nInMelee, int n // When the ability is used that slot is now not readied. // Multiple uses of the same spell are stored in different slots. ai_RemoveTalent(oCreature, jCategory, jLevel, sCategory, nLevel, nSlotIndex); + if(nMaxSlotIndex == 1) ai_UpdateMaxTalentLevel(oCreature, jCategory, sCategory, nMaxTalentLevel, nLevel); return TRUE; } } @@ -2343,11 +3139,12 @@ int ai_UseCreatureTalent(object oCreature, string sCategory, int nInMelee, int n // Items do not need to concentrate. if(ai_UseCreatureItemTalent(oCreature, jLevel, jTalent, sCategory, nInMelee, oTarget)) { - if(AI_DEBUG) ai_Debug("0i_talents", "2337", "Checking if Item is used up: " + + if(AI_DEBUG) ai_Debug("0i_talents", "2473", "Checking if Item is used up: " + IntToString(JsonGetInt(JsonArrayGet(jTalent, 4)))); if(JsonGetInt(JsonArrayGet(jTalent, 4)) == -1) { ai_RemoveTalent(oCreature, jCategory, jLevel, sCategory, nLevel, nSlotIndex); + if(nMaxSlotIndex == 1) ai_UpdateMaxTalentLevel(oCreature, jCategory, sCategory, nMaxTalentLevel, nLevel); } return TRUE; } @@ -2356,7 +3153,182 @@ int ai_UseCreatureTalent(object oCreature, string sCategory, int nInMelee, int n nSlotIndex++; } } - else SetLocalInt(oCreature, AI_MAX_TALENT + sCategory, nLevel - 1); + else if(!bHasTalent) SetLocalInt(oCreature, AI_MAX_LEVEL + sCategory, nLevel - 1); + nLevel--; + } + return FALSE; +} +int ai_UseTalentByLevel(object oCreature, int nTalent, object oTarget) +{ + if(AI_DEBUG) ai_Debug("0i_talents", "1912", GetName(oCreature) + " is trying to use " + GetStringByStrRef(StringToInt(Get2DAString("spells", "Name", nTalent))) + + " on " + GetName(oTarget)); + // Get the saved category from oCreature. + string sCategory = Get2DAString("ai_spells", "Category", nTalent); + json jCategory = GetLocalJson(oCreature, sCategory); + if(AI_DEBUG) ai_Debug("0i_talents", "1917", "jCategory: " + sCategory + " " + JsonDump(jCategory, 2)); + if(JsonGetType(jCategory) == JSON_TYPE_NULL) return FALSE; + json jLevel, jTalent; + int nLevel, nClass, nSlot, nType, nSlotIndex, nMaxSlotIndex, nTalentUsed, nSpell; + // Loop through nLevels down to nMinNoTalentLevel looking for the first talent + // (i.e. the highest or best?). + while(nLevel <= 9) + { + // Get the array of nLevel. + jLevel = JsonArrayGet(jCategory, nLevel); + nMaxSlotIndex = JsonGetLength(jLevel); + if(AI_DEBUG) ai_Debug("0i_talents", "1925", "nLevel: " + IntToString(nLevel) + + " nMaxSlotIndex: " + IntToString(nMaxSlotIndex)); + if(nMaxSlotIndex > 0) + { + // Get the talent within nLevel cycling from the first to the last. + nSlotIndex = 0; + while (nSlotIndex < nMaxSlotIndex) + { + jTalent= JsonArrayGet(jLevel, nSlotIndex); + if(AI_DEBUG) ai_Debug("0i_talents", "1936", "nSlotIndex: " + IntToString(nSlotIndex) + + " jTalent Type: " + IntToString(JsonGetInt(JsonArrayGet(jTalent, 0)))); + nSpell = JsonGetInt(JsonArrayGet(jTalent, 1)); + if(nSpell == nTalent) + { + nType = JsonGetInt(JsonArrayGet(jTalent, 0)); + if(nType == AI_TALENT_TYPE_SPELL || nType == AI_TALENT_TYPE_SP_ABILITY) + { + if(ai_UseTalentOnObject(oCreature, jTalent, oTarget, 0)) + { + ai_RemoveTalent(oCreature, jCategory, jLevel, sCategory, nLevel, nSlotIndex); + return TRUE; + } + } + else if(nType == AI_TALENT_TYPE_ITEM) + { + // Items do not need to concentrate. + if(ai_UseCreatureItemTalent(oCreature, jLevel, jTalent, sCategory, 0, oTarget)) + { + if(AI_DEBUG) ai_Debug("0i_talents", "1955", "Checking if Item is used up: " + + IntToString(JsonGetInt(JsonArrayGet(jTalent, 4)))); + if(JsonGetInt(JsonArrayGet(jTalent, 4)) == -1) + { + ai_RemoveTalent(oCreature, jCategory, jLevel, sCategory, nLevel, nSlotIndex); + } + return TRUE; + } + } + } + nSlotIndex++; + } + } + nLevel++; + } + return FALSE; +} */ +/******************************************************************************* + Old talent system that checks by category then level. +*******************************************************************************/ +int ai_UseCreatureTalent(object oCreature, string sCategory, int nInMelee, int nLevel = 10, object oTarget = OBJECT_INVALID) +{ + // Get the Max Talent Level to see if we even need to pull this talent. + int nMaxTalentLevel = GetLocalInt(oCreature, AI_MAX_TALENT + sCategory); + if(AI_DEBUG) ai_Debug("0i_talents", "2394", AI_MAX_TALENT + sCategory + ": " + + IntToString(nMaxTalentLevel) + + " nLevel: " + IntToString(nLevel)); + if(nMaxTalentLevel == -1) return FALSE; + // Get the saved category from oCreature. + json jCategory = GetLocalJson(oCreature, sCategory); + if(AI_DEBUG) ai_Debug("0i_talents", "2326", "jCategory: " + sCategory + " " + JsonDump(jCategory, 2)); + if(JsonGetType(jCategory) == JSON_TYPE_NULL) + { + SetLocalInt(oCreature, AI_MAX_TALENT + sCategory, -1); + return FALSE; + } + // If there are no talents at higher levels then start at the lowest talent level. + if(nMaxTalentLevel < nLevel) nLevel = nMaxTalentLevel; + if(nLevel < 0 || nLevel > 10) nLevel = 9; + json jLevel, jTalent; + int bHasTalent, nClass, nSlot, nType, nSlotIndex, nMaxSlotIndex, nTalentUsed, nSpell; + int bUseMagic = !ai_GetMagicMode(oCreature, AI_MAGIC_NO_MAGIC); + int bUseMagicItems = !ai_GetMagicMode(oCreature, AI_MAGIC_NO_MAGIC_ITEMS); + if(AI_DEBUG) ai_Debug("0i_talents", "2413", "bUseMagic: " + IntToString(bUseMagic) + + " bUseMagicItems: " + IntToString(bUseMagicItems)); + // Loop through nLevels starting at the highest then going to the lowest. + // (i.e. the highest or best is our assumption). + while(nLevel > -1) + { + // Get the array of nLevel cycling down to 0. + jLevel = JsonArrayGet(jCategory, nLevel); + nMaxSlotIndex = JsonGetLength(jLevel); + if(AI_DEBUG) ai_Debug("0i_talents", "2422", "nLevel: " + IntToString(nLevel) + + " nMaxSlotIndex: " + IntToString(nMaxSlotIndex)); + if(nMaxSlotIndex > 0) + { + bHasTalent = TRUE; + // Get the talent within nLevel cycling from the first to the last. + nSlotIndex = 0; + while (nSlotIndex < nMaxSlotIndex) + { + jTalent= JsonArrayGet(jLevel, nSlotIndex); + if(AI_DEBUG) ai_Debug("0i_talents", "2432", "nSlotIndex: " + IntToString(nSlotIndex) + + " jTalent Type: " + IntToString(JsonGetInt(JsonArrayGet(jTalent, 0)))); + nType = JsonGetInt(JsonArrayGet(jTalent, 0)); + if(bUseMagic) + { + if(nType == AI_TALENT_TYPE_SPELL) + { + // Check to make sure they still have this spell. + nClass = JsonGetInt(JsonArrayGet(jTalent, 2)); + if(AI_DEBUG) ai_Debug("0i_talents", "3290", GetName(oCreature) + " Memorizes Spells? " + + Get2DAString("classes", "MemorizesSpells", nClass)); + if(Get2DAString("classes", "MemorizesSpells", nClass) == "1") + { + if(AI_DEBUG) ai_Debug("0i_talents", "3294", " Spell Memorized? " + + IntToString(GetMemorizedSpellReady(oCreature, nClass, nLevel, nSlotIndex))); + if(GetMemorizedSpellReady(oCreature, nClass, nLevel, nSlotIndex) < 1) + { + ai_RemoveTalent(oCreature, jCategory, jLevel, sCategory, nLevel, nSlotIndex); + if(nMaxSlotIndex == 1) ai_UpdateMaxTalentLevel(oCreature, jCategory, sCategory, nMaxTalentLevel, nLevel); + } + else if(ai_UseCreatureSpellTalent(oCreature, jLevel, jTalent, sCategory, nInMelee, oTarget)) return TRUE; + } + else if(!GetSpellUsesLeft(oCreature, nClass, JsonGetInt(JsonArrayGet(jTalent, 1)))) + { + ai_RemoveTalentLevel(oCreature, jCategory, jLevel, sCategory, nLevel); + if(nMaxSlotIndex == 1) ai_UpdateMaxTalentLevel(oCreature, jCategory, sCategory, nMaxTalentLevel, nLevel); + nTalentUsed = FALSE; + } + else if(ai_UseCreatureSpellTalent(oCreature, jLevel, jTalent, sCategory, nInMelee, oTarget)) return TRUE; + } + else if(nType == AI_TALENT_TYPE_SP_ABILITY) + { + // Special ability spells do not need to concentrate?! + if(ai_CheckSpecialTalentsandUse(oCreature, jTalent, sCategory, nInMelee, oTarget)) + { + // When the ability is used that slot is now not readied. + // Multiple uses of the same spell are stored in different slots. + ai_RemoveTalent(oCreature, jCategory, jLevel, sCategory, nLevel, nSlotIndex); + if(nMaxSlotIndex == 1) ai_UpdateMaxTalentLevel(oCreature, jCategory, sCategory, nMaxTalentLevel, nLevel); + return TRUE; + } + } + } + else if(bUseMagicItems && nType == AI_TALENT_TYPE_ITEM) + { + // Items do not need to concentrate. + if(ai_UseCreatureItemTalent(oCreature, jLevel, jTalent, sCategory, nInMelee, oTarget)) + { + if(AI_DEBUG) ai_Debug("0i_talents", "2473", "Checking if Item is used up: " + + IntToString(JsonGetInt(JsonArrayGet(jTalent, 4)))); + if(JsonGetInt(JsonArrayGet(jTalent, 4)) == -1) + { + ai_RemoveTalent(oCreature, jCategory, jLevel, sCategory, nLevel, nSlotIndex); + if(nMaxSlotIndex == 1) ai_UpdateMaxTalentLevel(oCreature, jCategory, sCategory, nMaxTalentLevel, nLevel); + } + return TRUE; + } + } + //else if(nType == AI_TALENT_TYPE_FEAT) {} + nSlotIndex++; + } + } + else if(!bHasTalent) SetLocalInt(oCreature, AI_MAX_TALENT + sCategory, nLevel - 1); nLevel--; } return FALSE; @@ -2424,7 +3396,20 @@ int ai_UseTalent(object oCreature, int nTalent, object oTarget) } return FALSE; } -int ai_UseTalentOnObject(object oCreature, json jTalent, object oTarget, int nInMelee) +// Lets do a check right before we cast the spell to see if the target is still good. +void ai_CheckSpellTarget(object oCreature, object oTarget) +{ + if(GetIsDead(oTarget)) + { + //SendMessageToPC(GetFirstPC(), "0i_talents, 2864, " + GetName(oCreature) + + //" is stopping our spell casting because " + GetName(oTarget) + " is dead!"); + //WriteTimestampedLogEntry("0i_talents, 2864, " + GetName(oCreature) + + //" is stopping our spell casting because " + GetName(oTarget) + " is dead!"); + ai_ClearCreatureActions(); + ExecuteScript("0e_do_combat_rnd", oCreature); + } +} +int ai_UseTalentOnObject(object oCreature, json jTalent, object oTarget, int nInMelee, int bCheckPosition = TRUE) { int nClass, nLevel, nSlot, nMetaMagic, nDomain; int nSpell = JsonGetInt(JsonArrayGet(jTalent, 1)); @@ -2453,13 +3438,13 @@ int ai_UseTalentOnObject(object oCreature, json jTalent, object oTarget, int nIn if(AI_DEBUG) ai_Debug("0i_talents", "1790", GetName(oCreature) + " is using a special ability!"); nSpell = JsonGetInt(JsonArrayGet(jTalent, 1)); nClass = 255; - if(ai_CheckCombatPosition(oCreature, oTarget, nInMelee, nSpell)) return TRUE; + if(bCheckPosition && ai_CheckCombatPosition(oCreature, oTarget, nInMelee, nSpell)) return TRUE; } else if(nType == AI_TALENT_TYPE_ITEM) { object oItem = StringToObject(JsonGetString(JsonArrayGet(jTalent, 2))); int nBaseItemType = GetBaseItemType(oItem); - if(ai_CheckCombatPosition(oCreature, oTarget, nInMelee, nSpell, nBaseItemType)) return TRUE; + if(bCheckPosition && ai_CheckCombatPosition(oCreature, oTarget, nInMelee, nSpell, nBaseItemType)) return TRUE; int nIndex, nSubIndex = 0; nSlot = JsonGetInt(JsonArrayGet(jTalent, 4)); itemproperty ipProp = GetFirstItemProperty(oItem); @@ -2523,7 +3508,14 @@ int ai_UseTalentOnObject(object oCreature, json jTalent, object oTarget, int nIn " nDomain: " + IntToString(nDomain) + " nClass: " + IntToString(nClass)); ai_SetLastAction(oCreature, nSpell); ActionCastSpellAtObject(nSpell, oTarget, nMetaMagic, FALSE, nDomain, 0, FALSE, nClass, FALSE); + // This was added to do a second check right before they cast to make sure + // the target was not killed between us deciding to cast and then casting! + DelayCommand(2.5, ai_CheckSpellTarget(oCreature, oTarget)); ActionDoCommand(ExecuteScript("0e_do_combat_rnd", oCreature)); + // Temp Debug!!!!! + //string sSpellName = GetStringByStrRef(StringToInt(Get2DAString("spells", "Name", nSpell))); + //SendMessageToPC(GetFirstPC(), "0i_talents, 1859 " + GetName(oCreature) + " is casting " + sSpellName + " on " + GetName(oTarget)); + // Temp Debug!!!!! if(AI_DEBUG) { string sSpellName = GetStringByStrRef(StringToInt(Get2DAString("spells", "Name", nSpell))); @@ -2630,7 +3622,23 @@ int ai_UseTalentAtLocation(object oCreature, json jTalent, object oTarget, int n int ai_CheckSpecialTalentsandUse(object oCreature, json jTalent, string sCategory, int nInMelee, object oTarget) { int nSpell = JsonGetInt(JsonArrayGet(jTalent, 1)); - if(AI_DEBUG) ai_Debug("0i_talents", "1949", "nSpell: " + GetStringByStrRef(StringToInt(Get2DAString("spells", "Name", nSpell))) + + // This checks to see if they tried to cast this spell last round and if we + // are trying to cast it again before at least 3 seconds is up then the spell + // is being canceled... remove this spell and look for another! + if(ai_CompareLastAction(oCreature, nSpell) && + ai_GetCurrentTimeStamp() - GetLocalInt(oCreature, sLastActionTimeVarname) < 2) + { + if(AI_DEBUG) + { + int nLastTime = GetLocalInt(oCreature, sLastActionTimeVarname); + int nCurrentTime = ai_GetCurrentTimeStamp(); + ai_Debug("0i_talents", "3634", "Same spell cast within less than 2 seconds!" + + " nSpell: " + IntToString(nSpell) + " nLastActionTime: " + IntToString(nLastTime) + + " nCurrentTime: " + IntToString(nCurrentTime) + " Difference: " + IntToString(nCurrentTime - nLastTime)); + } + return FALSE; + } + if(AI_DEBUG) ai_Debug("0i_talents", "3637", "nSpell: " + GetStringByStrRef(StringToInt(Get2DAString("spells", "Name", nSpell))) + " sCategory: " + sCategory); if(sCategory == AI_TALENT_DISCRIMINANT_AOE) { @@ -2647,8 +3655,13 @@ int ai_CheckSpecialTalentsandUse(object oCreature, json jTalent, string sCategor if(nInMelee) fRange = AI_RANGE_MELEE; else fRange = ai_GetOffensiveSpellSearchRange(oCreature, nSpell); // Get the biggest group we can. - string sIndex = IntToString(ai_GetHighestMeleeIndexNotInAOE(oCreature)); - oTarget = GetLocalObject(oCreature, AI_ENEMY + sIndex); + int nIndex = ai_GetHighestGroupIndexNotInAOE(oCreature); + if(nIndex == 0) + { + nIndex = ai_GetHighestGroupIndex(oCreature); + if(nIndex == 0) return FALSE; + } + oTarget = GetLocalObject(oCreature, AI_ENEMY + IntToString(nIndex)); if(!ai_CreatureHasDispelableEffect(oCreature, oTarget)) return FALSE; // Maybe we should do an area of effect instead? int nEnemies = ai_GetNumOfEnemiesInRange(oTarget, 5.0); @@ -2677,15 +3690,46 @@ int ai_CheckSpecialTalentsandUse(object oCreature, json jTalent, string sCategor if(nUndead < 3) return FALSE; oTarget = ai_GetLowestCRRacialTarget(oCreature, RACIAL_TYPE_UNDEAD, fRange); } + else if(nSpell == SPELLABILITY_PULSE_DROWN) + { + if(nInMelee > 1) + { + oTarget = GetLocalObject(oCreature, AI_ENEMY_NEAREST); + int nRace = GetRacialType(oTarget); + if(AI_DEBUG) ai_Debug("0i_talents", "2778", "nRace(10/24/16): " + IntToString(nRace)); + if(nRace != RACIAL_TYPE_CONSTRUCT && + nRace != RACIAL_TYPE_UNDEAD && + nRace != RACIAL_TYPE_ELEMENTAL) + { + if(AI_DEBUG) ai_Debug("0i_talents", "2783", "Using Pulse Drown talent!"); + if(ai_UseTalentOnObject(oCreature, jTalent, oCreature, nInMelee, FALSE)) return TRUE; + } + } + return FALSE; + } + else if(nSpell == SPELLABILITY_PULSE_WHIRLWIND) + { + if(nInMelee > 1) + { + if(AI_DEBUG) ai_Debug("0i_talents", "2793", "Using Pulse Whirlwind talent!"); + if(ai_UseTalentOnObject(oCreature, jTalent, oCreature, nInMelee, FALSE)) return TRUE; + } + return FALSE; + } // Get a target for discriminant spells if one is not already set. if(oTarget == OBJECT_INVALID) { float fRange; if(nInMelee) fRange = AI_RANGE_MELEE; else fRange = ai_GetOffensiveSpellSearchRange(oCreature, nSpell); - oTarget = ai_CheckForGroupedTargetNotInAOE(oCreature, fRange); + oTarget = ai_GetGroupTargetNotInAOE(oCreature, fRange); + if(oTarget == OBJECT_INVALID) + { + oTarget = ai_GetGroupTarget(oCreature, fRange); + if(oTarget == OBJECT_INVALID) return FALSE; + } } - if(oTarget == OBJECT_INVALID || GetHasSpellEffect(nSpell, oTarget) || + if(GetHasSpellEffect(nSpell, oTarget) || !ai_CastOffensiveSpellVsTarget(oCreature, oTarget, nSpell) || ai_CreatureImmuneToEffect(oCreature, oTarget, nSpell)) return FALSE; } @@ -2713,9 +3757,13 @@ int ai_CheckSpecialTalentsandUse(object oCreature, json jTalent, string sCategor if(oTarget == OBJECT_INVALID) { float fRange = ai_GetOffensiveSpellSearchRange(oCreature, nSpell); - oTarget = ai_CheckForGroupedTargetNotInAOE(oCreature, fRange); + oTarget = ai_GetGroupTargetNotInAOE(oCreature, fRange); + if(oTarget == OBJECT_INVALID) + { + oTarget = ai_GetGroupTarget(oCreature, fRange); + if(oTarget == OBJECT_INVALID) return FALSE; + } // Check for the number of allies, if there are too many then skip. - if(oTarget == OBJECT_INVALID) return FALSE; int nRoll = d6() + 1; if(GetAssociateType(oCreature)) nRoll = d3(); int nAllies = ai_GetNumOfAlliesInGroup(oTarget, AI_RANGE_CLOSE); @@ -2762,18 +3810,18 @@ int ai_CheckSpecialTalentsandUse(object oCreature, json jTalent, string sCategor // Lets get a caster as they should have more buffs. oTarget = ai_GetNearestClassTarget(oCreature, AI_CLASS_TYPE_CASTER, fRange); // No caster then get the most powerful enemy! - if(oTarget == OBJECT_INVALID) oTarget = ai_GetHighestCRTarget(oCreature, fRange); - if(oTarget != OBJECT_INVALID) + if(oTarget == OBJECT_INVALID) { - if(!ai_CreatureHasDispelableEffect(oCreature, oTarget)) return FALSE; - // Maybe we should do an area of effect instead? - int nEnemies = ai_GetNumOfEnemiesInRange(oTarget, 5.0); - if(nEnemies > 2) - { - if(ai_UseTalentAtLocation(oCreature, jTalent, oTarget, nInMelee)) return TRUE; - } + oTarget = ai_GetHighestCRTarget(oCreature, fRange); + if(oTarget == OBJECT_INVALID) return FALSE; + } + if(!ai_CreatureHasDispelableEffect(oCreature, oTarget)) return FALSE; + // Maybe we should do an area of effect instead? + int nEnemies = ai_GetNumOfEnemiesInRange(oTarget, 5.0); + if(nEnemies > 2) + { + if(ai_UseTalentAtLocation(oCreature, jTalent, oTarget, nInMelee)) return TRUE; } - if(oTarget == OBJECT_INVALID) return FALSE; } // Make sure the spell will work on the target. else if(nSpell == SPELL_HOLD_PERSON || nSpell == SPELL_DOMINATE_PERSON || @@ -2816,8 +3864,9 @@ int ai_CheckSpecialTalentsandUse(object oCreature, json jTalent, string sCategor if(nInMelee) fRange = AI_RANGE_MELEE; else fRange = ai_GetOffensiveSpellSearchRange(oCreature, nSpell); oTarget = ai_GetSpellTargetBasedOnSaves(oCreature, nSpell, fRange); + if(oTarget == OBJECT_INVALID) return FALSE; } - if(oTarget == OBJECT_INVALID || GetHasSpellEffect(nSpell, oTarget) || + if(GetHasSpellEffect(nSpell, oTarget) || !ai_CastOffensiveSpellVsTarget(oCreature, oTarget, nSpell) || ai_CreatureImmuneToEffect(oCreature, oTarget, nSpell)) return FALSE; //********************************************************************** @@ -2859,8 +3908,9 @@ int ai_CheckSpecialTalentsandUse(object oCreature, json jTalent, string sCategor if(oTarget == OBJECT_INVALID) { oTarget = ai_GetSpellTargetBasedOnSaves(oCreature, nSpell, AI_RANGE_MELEE); + if(oTarget == OBJECT_INVALID) return FALSE; } - if(oTarget == OBJECT_INVALID || GetHasSpellEffect(nSpell, oTarget) || + if(GetHasSpellEffect(nSpell, oTarget) || !ai_CastOffensiveSpellVsTarget(oCreature, oTarget, nSpell) || ai_CreatureImmuneToEffect(oCreature, oTarget, nSpell)) return FALSE; } @@ -3046,8 +4096,9 @@ int ai_CheckSpecialTalentsandUse(object oCreature, json jTalent, string sCategor if(fRange == 0.1f) oTarget = oCreature; // Range/Touch spell else oTarget = ai_GetAllyBuffTarget(oCreature, nSpell, fRange); + if(oTarget == OBJECT_INVALID) return FALSE; } - if(oTarget == OBJECT_INVALID || GetHasSpellEffect(nSpell, oTarget)) return FALSE; + if(GetHasSpellEffect(nSpell, oTarget)) return FALSE; //********************************************************************** //********** These spells are checked after picking a target *********** //********************************************************************** diff --git a/_module/nss/0i_time.nss b/_module/nss/0i_time.nss index 3052ea6..78d6ec9 100644 --- a/_module/nss/0i_time.nss +++ b/_module/nss/0i_time.nss @@ -8,55 +8,42 @@ int GetPosixTimestamp(); string GetCurrentDateTime(); */////////////////////////////////////////////////////////////////////////////// -// RETURNS a Timestamp in seconds since 1970-01-01. -int GetCurrentTimeInSeconds(); -// RETURNS a formated date, good for timestamping logs and text. +// Returns a Timestamp in seconds since 1970-01-01. +int ai_GetCurrentTimeStamp(); +// Returns a formated date, good for Dating logs and text. string GetCurrentDateTime(); // Sends a server shutdown message 1800 seconds i.e 30 minutes before. // nDuration is in seconds. i.e. one hours is 3600 defaults to 24 hours (86400). // Should be put into the servers OnHeartBeat. void CheckServerShutdownMessage(int nDuration = 86400); +/// Returns the current time formatted according to the provided sqlite date time format string. +/// Format string as used by sqlites STRFTIME(). +/// Returns the current time in the requested format. Empty string on error. +string SQLite_GetFormattedSystemTime(string format); +/// Returns the number of milliseconds since midnight on January 1, 1970. +int SQLite_GetTimeMilliseconds(); +/// Returns the date in the format (mm/dd/yyyy). +string SQLite_GetSystemDate(); +/// Returns the current time in the format (24:mm:ss). +string SQLite_GetSystemTime(); -int GetCurrentTimeInSeconds() +int ai_GetCurrentTimeStamp() { - string stmt = "SELECT strftime('%s','now');"; - sqlquery sqlQuery = SqlPrepareQueryObject(GetModule(), stmt); - SqlStep(sqlQuery); - return SqlGetInt(sqlQuery, 0); + sqlquery query = SqlPrepareQueryObject(GetModule(), "SELECT STRFTIME('%s', 'now')"); + SqlStep(query); + return SqlGetInt(query, 0); } string GetCurrentDateTime() { - string stmt = "SELECT datetime('now', 'localtime')"; - sqlquery sqlQuery = SqlPrepareQueryObject(GetModule(), stmt); + sqlquery sqlQuery = SqlPrepareQueryObject(GetModule(), "SELECT datetime('now', 'localtime')"); SqlStep(sqlQuery); return SqlGetString(sqlQuery, 0); } -/// @addtogroup time Time -/// @brief Provides various time related functions. -/// @brief Returns the current time formatted according to the provided sqlite date time format string. -/// @param format Format string as used by sqlites STRFTIME(). -/// @return The current time in the requested format. Empty string on error. -string SQLite_GetFormattedSystemTime(string format); -/// @return Returns the number of seconds since midnight on January 1, 1970. -int SQLite_GetTimeStamp(); -/// @return Returns the number of milliseconds since midnight on January 1, 1970. -int SQLite_GetTimeMilliseconds(); -/// @brief A millisecond timestamp struct SQLite_MillisecondTimeStamp { int seconds; ///< Seconds since epoch int milliseconds; ///< Milliseconds }; -/// @remark For mircosecond timestamps use NWNX_Utility_GetHighResTimeStamp(). -/// @return Returns the number of milliseconds since midnight on January 1, 1970. -struct SQLite_MillisecondTimeStamp SQLite_GetMillisecondTimeStamp(); -/// @brief Returns the current date. -/// @return The date in the format (mm/dd/yyyy). -string SQLite_GetSystemDate(); -/// @brief Returns current time. -/// @return The current time in the format (24:mm:ss). -string SQLite_GetSystemTime(); -/// @} string SQLite_GetFormattedSystemTime(string format) { sqlquery query = SqlPrepareQueryObject(GetModule(), "SELECT STRFTIME(@format, 'now', 'localtime')"); @@ -64,27 +51,12 @@ string SQLite_GetFormattedSystemTime(string format) SqlStep(query); // sqlite returns NULL for invalid format in STRFTIME() return SqlGetString(query, 0); } -int SQLite_GetTimeStamp() -{ - sqlquery query = SqlPrepareQueryObject(GetModule(), "SELECT STRFTIME('%s', 'now')"); - SqlStep(query); - return SqlGetInt(query, 0); -} int SQLite_GetTimeMillisecond() { sqlquery query = SqlPrepareQueryObject(GetModule(), "select cast((julianday('now') - 2440587.5) * 86400 * 1000 as integer)"); SqlStep(query); return SqlGetInt(query, 0); } -struct SQLite_MillisecondTimeStamp SQLite_GetMillisecondTimeStamp() -{ - sqlquery query = SqlPrepareQueryObject(GetModule(), "SELECT STRFTIME('%s', 'now'), SUBSTR(STRFTIME('%f', 'now'), 4)"); - SqlStep(query); - struct SQLite_MillisecondTimeStamp t; - t.seconds = SqlGetInt(query, 0); - t.milliseconds = SqlGetInt(query, 1); - return t; -} string SQLite_GetSystemDate() { return SQLite_GetFormattedSystemTime("%m/%d/%Y"); diff --git a/_module/nss/ai_a_atk_casters.nss b/_module/nss/ai_a_atk_casters.nss index 362ba4b..e1a8b4f 100644 --- a/_module/nss/ai_a_atk_casters.nss +++ b/_module/nss/ai_a_atk_casters.nss @@ -92,18 +92,18 @@ void main() if(ai_GetAIMode(oCreature, AI_MODE_DEFEND_MASTER)) oTarget = ai_GetLowestCRAttackerOnMaster(oCreature); if(oTarget == OBJECT_INVALID) oTarget = ai_GetNearestFavoredEnemyTarget(oCreature); if(oTarget == OBJECT_INVALID) ai_GetNearestClassTarget(oCreature, AI_CLASS_TYPE_CASTER); - if(oTarget == OBJECT_INVALID) oTarget = ai_GetLowestCRTarget(oCreature); + if(oTarget == OBJECT_INVALID) oTarget = ai_GetLowestCRPhysicalTarget(oCreature); } else { if(ai_GetAIMode(oCreature, AI_MODE_DEFEND_MASTER)) oTarget = ai_GetLowestCRAttackerOnMaster(oCreature); if(oTarget == OBJECT_INVALID) oTarget = ai_GetNearestFavoredEnemyTarget(oCreature, AI_RANGE_MELEE); if(oTarget == OBJECT_INVALID) ai_GetNearestClassTarget(oCreature, AI_CLASS_TYPE_CASTER, AI_RANGE_MELEE); - if(oTarget == OBJECT_INVALID) oTarget = ai_GetLowestCRTarget(oCreature, AI_RANGE_MELEE); + if(oTarget == OBJECT_INVALID) oTarget = ai_GetLowestCRPhysicalTarget(oCreature, AI_RANGE_MELEE); } if(oTarget != OBJECT_INVALID) { - if(ai_TryRapidShotFeat(oCreature, oTarget, nInMelee)) return; + if(ai_TryRangedTalents(oCreature, oTarget, nInMelee)) return; if(AI_DEBUG) ai_Debug("0i_actions", "519", "Do ranged attack against nearest: " + GetName(oTarget) + "!"); ai_ActionAttack(oCreature, AI_LAST_ACTION_RANGED_ATK, oTarget, nInMelee, TRUE); return; @@ -133,7 +133,7 @@ void main() { oTarget = ai_GetNearestClassTarget(oCreature, AI_CLASS_TYPE_CASTER, AI_RANGE_MELEE, AI_ENEMY, bAlwaysAtk); // If we didn't get a target then get any target within range. - if(oTarget == OBJECT_INVALID) oTarget = ai_GetNearestTarget(oCreature, AI_RANGE_MELEE, AI_ENEMY, bAlwaysAtk); + if(oTarget == OBJECT_INVALID) oTarget = ai_GetNearestPhysicalTarget(oCreature, AI_RANGE_MELEE, AI_ENEMY, bAlwaysAtk); } // If not then lets go find someone to attack! else @@ -141,7 +141,7 @@ void main() // Get the nearest enemy. oTarget = ai_GetNearestClassTarget(oCreature, AI_CLASS_TYPE_CASTER, AI_RANGE_PERCEPTION, AI_ENEMY, bAlwaysAtk); // If we didn't get a target then get any target within range. - if(oTarget == OBJECT_INVALID) oTarget = ai_GetNearestTarget(oCreature, AI_RANGE_PERCEPTION, AI_ENEMY, bAlwaysAtk); + if(oTarget == OBJECT_INVALID) oTarget = ai_GetNearestPhysicalTarget(oCreature, AI_RANGE_PERCEPTION, AI_ENEMY, bAlwaysAtk); } } } diff --git a/_module/nss/ai_a_atk_warrior.nss b/_module/nss/ai_a_atk_warrior.nss index 4821e53..fe6dc71 100644 --- a/_module/nss/ai_a_atk_warrior.nss +++ b/_module/nss/ai_a_atk_warrior.nss @@ -92,18 +92,18 @@ void main() if(ai_GetAIMode(oCreature, AI_MODE_DEFEND_MASTER)) oTarget = ai_GetLowestCRAttackerOnMaster(oCreature); if(oTarget == OBJECT_INVALID) oTarget = ai_GetNearestFavoredEnemyTarget(oCreature); if(oTarget == OBJECT_INVALID) ai_GetNearestClassTarget(oCreature, AI_CLASS_TYPE_WARRIOR); - if(oTarget == OBJECT_INVALID) oTarget = ai_GetLowestCRTarget(oCreature); + if(oTarget == OBJECT_INVALID) oTarget = ai_GetLowestCRPhysicalTarget(oCreature); } else { if(ai_GetAIMode(oCreature, AI_MODE_DEFEND_MASTER)) oTarget = ai_GetLowestCRAttackerOnMaster(oCreature); if(oTarget == OBJECT_INVALID) oTarget = ai_GetNearestFavoredEnemyTarget(oCreature, AI_RANGE_MELEE); if(oTarget == OBJECT_INVALID) ai_GetNearestClassTarget(oCreature, AI_CLASS_TYPE_WARRIOR, AI_RANGE_MELEE); - if(oTarget == OBJECT_INVALID) oTarget = ai_GetLowestCRTarget(oCreature, AI_RANGE_MELEE); + if(oTarget == OBJECT_INVALID) oTarget = ai_GetLowestCRPhysicalTarget(oCreature, AI_RANGE_MELEE); } if(oTarget != OBJECT_INVALID) { - if(ai_TryRapidShotFeat(oCreature, oTarget, nInMelee)) return; + if(ai_TryRangedTalents(oCreature, oTarget, nInMelee)) return; if(AI_DEBUG) ai_Debug("0i_actions", "519", "Do ranged attack against nearest: " + GetName(oTarget) + "!"); ai_ActionAttack(oCreature, AI_LAST_ACTION_RANGED_ATK, oTarget, nInMelee, TRUE); return; @@ -133,7 +133,7 @@ void main() { oTarget = ai_GetNearestClassTarget(oCreature, AI_CLASS_TYPE_WARRIOR, AI_RANGE_MELEE, AI_ENEMY, bAlwaysAtk); // If we didn't get a target then get any target within range. - if(oTarget == OBJECT_INVALID) oTarget = ai_GetNearestTarget(oCreature, AI_RANGE_MELEE, AI_ENEMY, bAlwaysAtk); + if(oTarget == OBJECT_INVALID) oTarget = ai_GetNearestPhysicalTarget(oCreature, AI_RANGE_MELEE, AI_ENEMY, bAlwaysAtk); } // If not then lets go find someone to attack! else @@ -141,7 +141,7 @@ void main() // Get the nearest enemy. oTarget = ai_GetNearestClassTarget(oCreature, AI_CLASS_TYPE_WARRIOR, AI_RANGE_PERCEPTION, AI_ENEMY, bAlwaysAtk); // If we didn't get a target then get any target within range. - if(oTarget == OBJECT_INVALID) oTarget = ai_GetNearestTarget(oCreature, AI_RANGE_PERCEPTION, AI_ENEMY, bAlwaysAtk); + if(oTarget == OBJECT_INVALID) oTarget = ai_GetNearestPhysicalTarget(oCreature, AI_RANGE_PERCEPTION, AI_ENEMY, bAlwaysAtk); } } } diff --git a/_module/nss/ai_a_barbarian.nss b/_module/nss/ai_a_barbarian.nss index 12521c9..525cfc3 100644 --- a/_module/nss/ai_a_barbarian.nss +++ b/_module/nss/ai_a_barbarian.nss @@ -55,12 +55,12 @@ void main() if(oTarget == OBJECT_INVALID) { // Lets pick off the weakest targets. - if(!nInMelee) oTarget = ai_GetLowestCRTarget(oCreature); - else oTarget = ai_GetLowestCRTarget(oCreature, AI_RANGE_MELEE); + if(!nInMelee) oTarget = ai_GetLowestCRPhysicalTarget(oCreature); + else oTarget = ai_GetLowestCRPhysicalTarget(oCreature, AI_RANGE_MELEE); } if(oTarget != OBJECT_INVALID) { - if(ai_TryRapidShotFeat(oCreature, oTarget, nInMelee)) return; + if(ai_TryRangedTalents(oCreature, oTarget, nInMelee)) return; ai_ActionAttack(oCreature, AI_LAST_ACTION_RANGED_ATK, oTarget, nInMelee, TRUE); return; } diff --git a/_module/nss/ai_a_bard.nss b/_module/nss/ai_a_bard.nss index 975bac2..05166ff 100644 --- a/_module/nss/ai_a_bard.nss +++ b/_module/nss/ai_a_bard.nss @@ -52,12 +52,12 @@ void main() if(oTarget == OBJECT_INVALID) { // Lets pick off the weakest targets. - if(!nInMelee) oTarget = ai_GetLowestCRTarget(oCreature); - else oTarget = ai_GetLowestCRTarget(oCreature, AI_RANGE_MELEE); + if(!nInMelee) oTarget = ai_GetLowestCRPhysicalTarget(oCreature); + else oTarget = ai_GetLowestCRPhysicalTarget(oCreature, AI_RANGE_MELEE); } if(oTarget != OBJECT_INVALID) { - if(ai_TryRapidShotFeat(oCreature, oTarget, nInMelee)) return; + if(ai_TryRangedTalents(oCreature, oTarget, nInMelee)) return; ai_ActionAttack(oCreature, AI_LAST_ACTION_RANGED_ATK, oTarget, nInMelee, TRUE); return; } diff --git a/_module/nss/ai_a_cleric.nss b/_module/nss/ai_a_cleric.nss index 5de1cc2..b138f62 100644 --- a/_module/nss/ai_a_cleric.nss +++ b/_module/nss/ai_a_cleric.nss @@ -72,12 +72,12 @@ void main() if(oTarget == OBJECT_INVALID) { // Lets pick off the weakest targets. - if(!nInMelee) oTarget = ai_GetLowestCRTarget(oCreature); - else oTarget = ai_GetLowestCRTarget(oCreature, AI_RANGE_MELEE); + if(!nInMelee) oTarget = ai_GetLowestCRPhysicalTarget(oCreature); + else oTarget = ai_GetLowestCRPhysicalTarget(oCreature, AI_RANGE_MELEE); } if(oTarget != OBJECT_INVALID) { - if(ai_TryRapidShotFeat(oCreature, oTarget, nInMelee)) return; + if(ai_TryRangedTalents(oCreature, oTarget, nInMelee)) return; ai_ActionAttack(oCreature, AI_LAST_ACTION_RANGED_ATK, oTarget, nInMelee, TRUE); return; } diff --git a/_module/nss/ai_a_defensive.nss b/_module/nss/ai_a_defensive.nss index f19523c..983e6e6 100644 --- a/_module/nss/ai_a_defensive.nss +++ b/_module/nss/ai_a_defensive.nss @@ -61,7 +61,7 @@ void main() if(ai_TryImprovedExpertiseFeat(oCreature)) return; if(ai_TryExpertiseFeat(oCreature)) return; // Lets get the strongest melee opponent in melee with us. - oTarget = ai_GetHighestCRTarget(oCreature, AI_RANGE_MELEE); + oTarget = ai_GetHighestCRPhysicalTarget(oCreature, AI_RANGE_MELEE); if(oTarget == OBJECT_INVALID) oTarget = oNearestEnemy; // Use knockdown when appropriate and the target is not immune. if(ai_TryKnockdownFeat(oCreature, oTarget)) return; diff --git a/_module/nss/ai_a_druid.nss b/_module/nss/ai_a_druid.nss index 53b9303..ce2d265 100644 --- a/_module/nss/ai_a_druid.nss +++ b/_module/nss/ai_a_druid.nss @@ -24,12 +24,38 @@ void main() nMaxLevel = ai_GetAssociateTalentMaxLevel(oCreature, nDifficulty); } // Skill, Class, Offensive AOE's, and Defensive talents. + object oTarget = OBJECT_INVALID; + // Get the Spell Level we should still cast before turning into our polymorph form. + int nSpellLevel = ai_GetHasPolymorphSelfFeat(oCreature); + int nMaxTalentLevel; + if(AI_DEBUG) ai_Debug("ai_a_druid", "31", "nSpellLevel: " + IntToString(nSpellLevel)); if(nDifficulty >= AI_COMBAT_MODERATE) { + // *************************** SPELL TALENTS *************************** + if(!ai_GetMagicMode(oCreature, AI_MAGIC_DEFENSIVE_CASTING)) + { + if(ai_UseCreatureTalent(oCreature, AI_TALENT_INDISCRIMINANT_AOE, nInMelee, nMaxLevel)) return; + if(ai_UseCreatureTalent(oCreature, AI_TALENT_DISCRIMINANT_AOE, nInMelee, nMaxLevel)) return; + } // ************************** CLASS FEATURES *************************** if(ai_TrySummonAnimalCompanionTalent(oCreature)) return; - // *************************** SPELL TALENTS *************************** - if(ai_CheckForAssociateSpellTalent(oCreature, nInMelee, nMaxLevel)) return; + //************************** DEFENSIVE TALENTS *************************** + if(!ai_GetMagicMode(oCreature, AI_MAGIC_OFFENSIVE_CASTING)) + { + if(ai_GetMagicMode(oCreature, AI_MAGIC_BUFF_MASTER)) oTarget = GetMaster(oCreature); + nMaxTalentLevel = GetLocalInt(oCreature, AI_MAX_TALENT + AI_TALENT_SUMMON); + if(AI_DEBUG) ai_Debug("ai_a_druid", "47", "nMaxTalentLevel 'S' " + IntToString(nMaxTalentLevel)); + if(nSpellLevel < nMaxTalentLevel && + ai_UseCreatureTalent(oCreature, AI_TALENT_SUMMON, nInMelee, nMaxLevel, oTarget)) return; + nMaxTalentLevel = GetLocalInt(oCreature, AI_MAX_TALENT + AI_TALENT_PROTECTION); + if(AI_DEBUG) ai_Debug("ai_a_druid", "51", "nMaxTalentLevel 'P' " + IntToString(nMaxTalentLevel)); + if(nSpellLevel < nMaxTalentLevel && + ai_UseCreatureTalent(oCreature, AI_TALENT_PROTECTION, nInMelee, nMaxLevel, oTarget)) return; + nMaxTalentLevel = GetLocalInt(oCreature, AI_MAX_TALENT + AI_TALENT_ENHANCEMENT); + if(AI_DEBUG) ai_Debug("ai_a_druid", "55", "nMaxTalentLevel 'E' " + IntToString(nMaxTalentLevel)); + if(nSpellLevel < nMaxTalentLevel && + ai_UseCreatureTalent(oCreature, AI_TALENT_ENHANCEMENT, nInMelee, nMaxLevel, oTarget)) return; + } } // Offensive single target talents. if(nDifficulty >= AI_COMBAT_EFFORTLESS) @@ -37,16 +63,24 @@ void main() // *************************** SPELL TALENTS *************************** if(!ai_GetMagicMode(oCreature, AI_MAGIC_DEFENSIVE_CASTING)) { - if(nInMelee > 0 && ai_UseCreatureTalent(oCreature, AI_TALENT_TOUCH, nInMelee, nMaxLevel)) return; - if(ai_UseCreatureTalent(oCreature, AI_TALENT_RANGED, nInMelee, nMaxLevel)) return; + if(nInMelee > 0) + { + nMaxTalentLevel = GetLocalInt(oCreature, AI_MAX_TALENT + AI_TALENT_TOUCH); + if(AI_DEBUG) ai_Debug("ai_druid", "69", "nMaxTalentLevel 'T' " + IntToString(nMaxTalentLevel)); + if(nSpellLevel < nMaxTalentLevel && + ai_UseCreatureTalent(oCreature, AI_TALENT_TOUCH, nInMelee, nMaxLevel)) return; + } + nMaxTalentLevel = GetLocalInt(oCreature, AI_MAX_TALENT + AI_TALENT_RANGED); + if(AI_DEBUG) ai_Debug("ai_druid", "74", "nMaxTalentLevel 'R' " + IntToString(nMaxTalentLevel)); + if(nSpellLevel < nMaxTalentLevel && + ai_UseCreatureTalent(oCreature, AI_TALENT_RANGED, nInMelee, nMaxLevel)) return; } + if(nDifficulty >= AI_COMBAT_MODERATE && ai_TryPolymorphSelfFeat(oCreature)) return; } - if(nDifficulty >= AI_COMBAT_MODERATE && ai_TryPolymorphSelfFeat(oCreature)) return; //************************** SKILL FEATURES ************************** if(ai_TryAnimalEmpathy(oCreature)) return; // PHYSICAL ATTACKS - Either we don't have talents or we are saving them. // ************************** Ranged feat attacks ************************** - object oTarget; if(!ai_GetAIMode(oCreature, AI_MODE_STOP_RANGED) && ai_CanIUseRangedWeapon(oCreature, nInMelee)) { if(ai_HasRangedWeaponWithAmmo(oCreature)) @@ -56,12 +90,12 @@ void main() if(oTarget == OBJECT_INVALID) { // Lets pick off the weakest targets. - if(!nInMelee) oTarget = ai_GetLowestCRTarget(oCreature); - else oTarget = ai_GetLowestCRTarget(oCreature, AI_RANGE_MELEE); + if(!nInMelee) oTarget = ai_GetLowestCRPhysicalTarget(oCreature); + else oTarget = ai_GetLowestCRPhysicalTarget(oCreature, AI_RANGE_MELEE); } if(oTarget != OBJECT_INVALID) { - if(ai_TryRapidShotFeat(oCreature, oTarget, nInMelee)) return; + if(ai_TryRangedTalents(oCreature, oTarget, nInMelee)) return; ai_ActionAttack(oCreature, AI_LAST_ACTION_RANGED_ATK, oTarget, nInMelee, TRUE); return; } diff --git a/_module/nss/ai_a_fighter.nss b/_module/nss/ai_a_fighter.nss index a5f3720..5434180 100644 --- a/_module/nss/ai_a_fighter.nss +++ b/_module/nss/ai_a_fighter.nss @@ -51,12 +51,12 @@ void main() if(oTarget == OBJECT_INVALID) { // Lets pick off the weakest targets. - if(!nInMelee) oTarget = ai_GetLowestCRTarget(oCreature); - else oTarget = ai_GetLowestCRTarget(oCreature, AI_RANGE_MELEE); + if(!nInMelee) oTarget = ai_GetLowestCRPhysicalTarget(oCreature); + else oTarget = ai_GetLowestCRPhysicalTarget(oCreature, AI_RANGE_MELEE); } if(oTarget != OBJECT_INVALID) { - if(ai_TryRapidShotFeat(oCreature, oTarget, nInMelee)) return; + if(ai_TryRangedTalents(oCreature, oTarget, nInMelee)) return; ai_ActionAttack(oCreature, AI_LAST_ACTION_RANGED_ATK, oTarget, nInMelee, TRUE); return; } diff --git a/_module/nss/ai_a_flanker.nss b/_module/nss/ai_a_flanker.nss index fb6845a..16fdbcb 100644 --- a/_module/nss/ai_a_flanker.nss +++ b/_module/nss/ai_a_flanker.nss @@ -60,8 +60,8 @@ void main() { oTarget = ai_GetFlankTarget(oCreature, AI_RANGE_MELEE); } - // Ok we are in a serious fight so lets not give attack of opportunities. - else oTarget = ai_GetNearestTarget(oCreature, AI_RANGE_MELEE); + // Ok we are in a serious fight so lets not give attacks of opportunities. + else oTarget = ai_GetNearestPhysicalTarget(oCreature, AI_RANGE_MELEE); } // If there are no enemies being attacked then lets stay back. if(oTarget == OBJECT_INVALID) @@ -83,10 +83,10 @@ void main() if(ai_HasRangedWeaponWithAmmo(oCreature)) { if(ai_TryRangedSneakAttack(oCreature, nInMelee)) return; - oTarget = ai_GetLowestCRTarget(oCreature); + oTarget = ai_GetLowestCRPhysicalTarget(oCreature); if(oTarget != OBJECT_INVALID) { - if(ai_TryRapidShotFeat(oCreature, oTarget, nInMelee)) return; + if(ai_TryRangedTalents(oCreature, oTarget, nInMelee)) return; ai_ActionAttack(oCreature, AI_LAST_ACTION_RANGED_ATK, oTarget, nInMelee, TRUE); return; } @@ -98,6 +98,12 @@ void main() return; } } + // Make sure we are not the only one here. Moving around looks funny when we are by ourselves. + else if(ai_GetNearestAlly(oCreature, 1, 7, 7) == OBJECT_INVALID) + { + oTarget = ai_GetNearestPhysicalTarget(oCreature, AI_RANGE_MELEE); + ai_ActionAttack(oCreature, AI_LAST_ACTION_MELEE_ATK, oTarget); + } } if(oTarget != OBJECT_INVALID) { diff --git a/_module/nss/ai_a_invisible.nss b/_module/nss/ai_a_invisible.nss index 9772b32..a660c84 100644 --- a/_module/nss/ai_a_invisible.nss +++ b/_module/nss/ai_a_invisible.nss @@ -75,12 +75,12 @@ void main() if(oTarget == OBJECT_INVALID) { // Lets pick off the weakest targets. - if(!nInMelee) oTarget = ai_GetLowestCRTarget(oCreature); - else oTarget = ai_GetLowestCRTarget(oCreature, AI_RANGE_MELEE); + if(!nInMelee) oTarget = ai_GetLowestCRPhysicalTarget(oCreature); + else oTarget = ai_GetLowestCRPhysicalTarget(oCreature, AI_RANGE_MELEE); } if(oTarget != OBJECT_INVALID) { - if(ai_TryRapidShotFeat(oCreature, oTarget, nInMelee)) return; + if(ai_TryRangedTalents(oCreature, oTarget, nInMelee)) return; ai_ActionAttack(oCreature, AI_LAST_ACTION_RANGED_ATK, oTarget, nInMelee, TRUE); return; } diff --git a/_module/nss/ai_a_monk.nss b/_module/nss/ai_a_monk.nss index 607ce4c..a690c16 100644 --- a/_module/nss/ai_a_monk.nss +++ b/_module/nss/ai_a_monk.nss @@ -52,12 +52,12 @@ void main() if(oTarget == OBJECT_INVALID) { // Lets pick off the weakest targets. - if(!nInMelee) oTarget = ai_GetLowestCRTarget(oCreature); - else oTarget = ai_GetLowestCRTarget(oCreature, AI_RANGE_MELEE); + if(!nInMelee) oTarget = ai_GetLowestCRPhysicalTarget(oCreature); + else oTarget = ai_GetLowestCRPhysicalTarget(oCreature, AI_RANGE_MELEE); } if(oTarget != OBJECT_INVALID) { - if(ai_TryRapidShotFeat(oCreature, oTarget, nInMelee)) return; + if(ai_TryRangedTalents(oCreature, oTarget, nInMelee)) return; ai_ActionAttack(oCreature, AI_LAST_ACTION_RANGED_ATK, oTarget, nInMelee, TRUE); return; } diff --git a/_module/nss/ai_a_no_cmb_mode.nss b/_module/nss/ai_a_no_cmb_mode.nss index 1ffedb4..5a3981c 100644 --- a/_module/nss/ai_a_no_cmb_mode.nss +++ b/_module/nss/ai_a_no_cmb_mode.nss @@ -91,17 +91,17 @@ void main() { if(ai_GetAIMode(oCreature, AI_MODE_DEFEND_MASTER)) oTarget = ai_GetLowestCRAttackerOnMaster(oCreature); if(oTarget == OBJECT_INVALID) oTarget = ai_GetNearestFavoredEnemyTarget(oCreature); - if(oTarget == OBJECT_INVALID) oTarget = ai_GetLowestCRTarget(oCreature); + if(oTarget == OBJECT_INVALID) oTarget = ai_GetLowestCRPhysicalTarget(oCreature); } else { if(ai_GetAIMode(oCreature, AI_MODE_DEFEND_MASTER)) oTarget = ai_GetLowestCRAttackerOnMaster(oCreature); if(oTarget == OBJECT_INVALID) oTarget = ai_GetNearestFavoredEnemyTarget(oCreature, AI_RANGE_MELEE); - if(oTarget == OBJECT_INVALID) oTarget = ai_GetLowestCRTarget(oCreature, AI_RANGE_MELEE); + if(oTarget == OBJECT_INVALID) oTarget = ai_GetLowestCRPhysicalTarget(oCreature, AI_RANGE_MELEE); } if(oTarget != OBJECT_INVALID) { - if(ai_TryRapidShotFeat(oCreature, oTarget, nInMelee)) return; + if(ai_TryRangedTalents(oCreature, oTarget, nInMelee)) return; if(AI_DEBUG) ai_Debug("ai_a_no_modes", "105", GetName(OBJECT_SELF) + " does ranged attack on weakest: " + GetName(oTarget) + "!"); ai_ActionAttack(oCreature, AI_LAST_ACTION_RANGED_ATK, oTarget, nInMelee, TRUE); return; diff --git a/_module/nss/ai_a_paladin.nss b/_module/nss/ai_a_paladin.nss index 24520a7..7e2391a 100644 --- a/_module/nss/ai_a_paladin.nss +++ b/_module/nss/ai_a_paladin.nss @@ -73,12 +73,12 @@ void main() if(oTarget == OBJECT_INVALID) { // Paladins face off against the strongest opponents first. - if(!nInMelee) oTarget = ai_GetHighestCRTarget(oCreature); - else oTarget = ai_GetHighestCRTarget(oCreature, AI_RANGE_MELEE); + if(!nInMelee) oTarget = ai_GetHighestCRPhysicalTarget(oCreature); + else oTarget = ai_GetHighestCRPhysicalTarget(oCreature, AI_RANGE_MELEE); } if(oTarget != OBJECT_INVALID) { - if(ai_TryRapidShotFeat(oCreature, oTarget, nInMelee)) return; + if(ai_TryRangedTalents(oCreature, oTarget, nInMelee)) return; ai_ActionAttack(oCreature, AI_LAST_ACTION_RANGED_ATK, oTarget, nInMelee, TRUE); return; } diff --git a/_module/nss/ai_a_polymorphed.nss b/_module/nss/ai_a_polymorphed.nss index 107e6e9..e566632 100644 --- a/_module/nss/ai_a_polymorphed.nss +++ b/_module/nss/ai_a_polymorphed.nss @@ -8,16 +8,21 @@ // Programmer: Philos ////////////////////////////////////////////////////////////////////////////////////////////////////// #include "0i_actions" -void ai_DoActions(object oCreature, int nForm) +void main() { + object oCreature = OBJECT_SELF; int nInMelee = ai_GetNumOfEnemiesInRange(oCreature); object oNearestEnemy = GetLocalObject(oCreature, AI_ENEMY_NEAREST); if(ai_TryHealingTalent(oCreature, nInMelee)) return; if(ai_TryCureConditionTalent(oCreature, nInMelee)) return; if(GetPercentageHPLoss(oCreature) <= AI_HEALTH_BLOODY) { - //ai_Debug("ai_a_polymorphed", "24", "We are wounded and are transforming back!"); + if(AI_DEBUG) ai_Debug("ai_a_polymorphed", "20", "We are wounded and are transforming back!"); ai_RemoveASpecificEffect(oCreature, EFFECT_TYPE_POLYMORPH); + DeleteLocalInt(oCreature, AI_POLYMORPHED); + // We need to create the creatures normal forms talent list. + DelayCommand(0.0, ai_ClearTalents(oCreature)); + DelayCommand(0.1, ai_SetCreatureTalents(oCreature, FALSE, TRUE)); return; } int nDifficulty = ai_GetDifficulty(oCreature); @@ -51,20 +56,3 @@ void ai_DoActions(object oCreature, int nForm) if(oTarget != OBJECT_INVALID) ai_ActionAttack(oCreature, AI_LAST_ACTION_MELEE_ATK, oTarget); else ai_SearchForHiddenCreature(oCreature, FALSE); } -void main() -{ - object oCreature = OBJECT_SELF; - // Need to know who we are so we can use thier abilities. - int nForm = GetAppearanceType(oCreature); - // Check to see if we are back to our normal form?(-1 to get the actual form #) - if(nForm == GetLocalInt(oCreature, AI_NORMAL_FORM) - 1) - { - // If we are transformed back then go back to our primary ai. - ai_SetCreatureAIScript(oCreature); - DeleteLocalInt(oCreature, AI_NORMAL_FORM); - string sAI = GetLocalString(oCreature, AI_COMBAT_SCRIPT); - if(sAI == "ai_a_polymorphed" || sAI == "") sAI = "ai_a_default"; - ExecuteScript(sAI, oCreature); - } - else ai_DoActions(oCreature, nForm); -} diff --git a/_module/nss/ai_a_ranged.nss b/_module/nss/ai_a_ranged.nss index 477937d..5b98865 100644 --- a/_module/nss/ai_a_ranged.nss +++ b/_module/nss/ai_a_ranged.nss @@ -68,17 +68,17 @@ void main() if(oTarget == OBJECT_INVALID) oTarget = ai_GetNearestFavoredEnemyTarget(oCreature); if(oTarget == OBJECT_INVALID) oTarget == ai_GetRangedTarget(oCreature); if(oTarget == OBJECT_INVALID && ai_TryRangedSneakAttack(oCreature, nInMelee)) return; - if(oTarget == OBJECT_INVALID) oTarget = ai_GetLowestCRTarget(oCreature); + if(oTarget == OBJECT_INVALID) oTarget = ai_GetLowestCRPhysicalTarget(oCreature); } else { if(ai_GetAIMode(oCreature, AI_MODE_DEFEND_MASTER)) oTarget = ai_GetLowestCRAttackerOnMaster(oCreature); if(oTarget == OBJECT_INVALID) oTarget = ai_GetNearestFavoredEnemyTarget(oCreature, AI_RANGE_MELEE); - if(oTarget == OBJECT_INVALID) oTarget = ai_GetLowestCRTarget(oCreature, AI_RANGE_MELEE); + if(oTarget == OBJECT_INVALID) oTarget = ai_GetLowestCRPhysicalTarget(oCreature, AI_RANGE_MELEE); } if(oTarget != OBJECT_INVALID) { - if(ai_TryRapidShotFeat(oCreature, oTarget, nInMelee)) return; + if(ai_TryRangedTalents(oCreature, oTarget, nInMelee)) return; ai_ActionAttack(oCreature, AI_LAST_ACTION_RANGED_ATK, oTarget, nInMelee, TRUE); return; } @@ -88,7 +88,30 @@ void main() return; } } - else if(ai_InCombatEquipBestRangedWeapon(oCreature)) return; + else + { + if(ai_InCombatEquipBestRangedWeapon(oCreature)) return; + oTarget = ai_GetEnemyAttackingMe(oCreature); + if(oTarget != OBJECT_INVALID) + { + if(ai_InCombatEquipBestMeleeWeapon(oCreature)) return; + if(ai_TrySneakAttack(oCreature, nInMelee)) return; + if(ai_TryWhirlwindFeat(oCreature)) return; + ai_ActionAttack(oCreature, AI_LAST_ACTION_MELEE_ATK, oTarget); + return; + } + else + { + oTarget = ai_GetNearestFavoredEnemyTarget(oCreature); + if(oTarget == OBJECT_INVALID) oTarget = ai_GetNearestTargetForMeleeCombat(oCreature, nInMelee); + if(oTarget != OBJECT_INVALID) + { + if(ai_TryMeleeTalents(oCreature, oTarget)) return; + ai_ActionAttack(oCreature, AI_LAST_ACTION_MELEE_ATK, oTarget); + return; + } + } + } } } // ************************** Melee feat attacks ************************* @@ -102,7 +125,12 @@ void main() if(ai_TrySneakAttack(oCreature, nInMelee)) return; if(ai_TryWhirlwindFeat(oCreature)) return; if(ai_GetAIMode(oCreature, AI_MODE_DEFEND_MASTER)) oTarget = ai_GetLowestCRAttackerOnMaster(oCreature); - if(oTarget == OBJECT_INVALID) oTarget = ai_GetNearestFavoredEnemyTarget(oCreature); + ai_ActionAttack(oCreature, AI_LAST_ACTION_MELEE_ATK, oTarget); + return; + } + else + { + oTarget = ai_GetNearestFavoredEnemyTarget(oCreature); if(oTarget == OBJECT_INVALID) oTarget = ai_GetNearestTargetForMeleeCombat(oCreature, nInMelee); if(oTarget != OBJECT_INVALID) { diff --git a/_module/nss/ai_a_ranger.nss b/_module/nss/ai_a_ranger.nss index 179298f..b359a5b 100644 --- a/_module/nss/ai_a_ranger.nss +++ b/_module/nss/ai_a_ranger.nss @@ -59,17 +59,17 @@ void main() if(!nInMelee) { oTarget = ai_GetNearestFavoredEnemyTarget(oCreature); - if(oTarget == OBJECT_INVALID) oTarget = ai_GetLowestCRTarget(oCreature); + if(oTarget == OBJECT_INVALID) oTarget = ai_GetLowestCRPhysicalTarget(oCreature); } else { oTarget = ai_GetNearestFavoredEnemyTarget(oCreature, AI_RANGE_MELEE); - if(oTarget == OBJECT_INVALID) oTarget = ai_GetLowestCRTarget(oCreature, AI_RANGE_MELEE); + if(oTarget == OBJECT_INVALID) oTarget = ai_GetLowestCRPhysicalTarget(oCreature, AI_RANGE_MELEE); } } if(oTarget != OBJECT_INVALID) { - if(ai_TryRapidShotFeat(oCreature, oTarget, nInMelee)) return; + if(ai_TryRangedTalents(oCreature, oTarget, nInMelee)) return; ai_ActionAttack(oCreature, AI_LAST_ACTION_RANGED_ATK, oTarget, nInMelee, TRUE); return; } diff --git a/_module/nss/ai_a_rogue.nss b/_module/nss/ai_a_rogue.nss index 10e1ae0..ad7c290 100644 --- a/_module/nss/ai_a_rogue.nss +++ b/_module/nss/ai_a_rogue.nss @@ -52,12 +52,12 @@ void main() { if(ai_TryRangedSneakAttack(oCreature, nInMelee)) return; // Lets pick off the weakest targets. - if(!nInMelee) oTarget = ai_GetLowestCRTarget(oCreature); - else oTarget = ai_GetLowestCRTarget(oCreature, AI_RANGE_MELEE); + if(!nInMelee) oTarget = ai_GetLowestCRPhysicalTarget(oCreature); + else oTarget = ai_GetLowestCRPhysicalTarget(oCreature, AI_RANGE_MELEE); } if(oTarget != OBJECT_INVALID) { - if(ai_TryRapidShotFeat(oCreature, oTarget, nInMelee)) return; + if(ai_TryRangedTalents(oCreature, oTarget, nInMelee)) return; ai_ActionAttack(oCreature, AI_LAST_ACTION_RANGED_ATK, oTarget, nInMelee, TRUE); return; } diff --git a/_module/nss/ai_a_sorcerer.nss b/_module/nss/ai_a_sorcerer.nss index 5e4a3b7..ac5062a 100644 --- a/_module/nss/ai_a_sorcerer.nss +++ b/_module/nss/ai_a_sorcerer.nss @@ -50,8 +50,8 @@ void main() if(oTarget == OBJECT_INVALID) { // Lets pick off the weakest targets. - if(!nInMelee) oTarget = ai_GetLowestCRTarget(oCreature); - else oTarget = ai_GetLowestCRTarget(oCreature, AI_RANGE_MELEE); + if(!nInMelee) oTarget = ai_GetLowestCRPhysicalTarget(oCreature); + else oTarget = ai_GetLowestCRPhysicalTarget(oCreature, AI_RANGE_MELEE); } if(oTarget != OBJECT_INVALID) { diff --git a/_module/nss/ai_a_wizard.nss b/_module/nss/ai_a_wizard.nss index dfad8c3..0249788 100644 --- a/_module/nss/ai_a_wizard.nss +++ b/_module/nss/ai_a_wizard.nss @@ -52,8 +52,8 @@ void main() if(oTarget == OBJECT_INVALID) { // Lets pick off the weakest targets. - if(!nInMelee) oTarget = ai_GetLowestCRTarget(oCreature); - else oTarget = ai_GetLowestCRTarget(oCreature, AI_RANGE_MELEE); + if(!nInMelee) oTarget = ai_GetLowestCRPhysicalTarget(oCreature); + else oTarget = ai_GetLowestCRPhysicalTarget(oCreature, AI_RANGE_MELEE); } if(oTarget != OBJECT_INVALID) { diff --git a/_module/nss/ai_barbarian.nss b/_module/nss/ai_barbarian.nss index 69efcb4..56604ba 100644 --- a/_module/nss/ai_barbarian.nss +++ b/_module/nss/ai_barbarian.nss @@ -41,11 +41,11 @@ void main() { if(ai_HasRangedWeaponWithAmmo(oCreature)) { - if(!nInMelee) oTarget = ai_GetNearestTarget(oCreature); - else oTarget = ai_GetNearestTarget(oCreature, AI_RANGE_MELEE); + if(!nInMelee) oTarget = ai_GetNearestPhysicalTarget(oCreature); + else oTarget = ai_GetNearestPhysicalTarget(oCreature, AI_RANGE_MELEE); if(oTarget != OBJECT_INVALID) { - if(ai_TryRapidShotFeat(oCreature, oTarget, nInMelee)) return; + if(ai_TryRangedTalents(oCreature, oTarget, nInMelee)) return; ai_ActionAttack(oCreature, AI_LAST_ACTION_RANGED_ATK, oTarget, nInMelee, TRUE); return; } diff --git a/_module/nss/ai_bard.nss b/_module/nss/ai_bard.nss index 9dde198..d26236c 100644 --- a/_module/nss/ai_bard.nss +++ b/_module/nss/ai_bard.nss @@ -39,11 +39,11 @@ void main() { if(ai_HasRangedWeaponWithAmmo(oCreature)) { - if(!nInMelee) oTarget = ai_GetNearestTarget(oCreature); - else oTarget = ai_GetNearestTarget(oCreature, AI_RANGE_MELEE); + if(!nInMelee) oTarget = ai_GetNearestPhysicalTarget(oCreature); + else oTarget = ai_GetNearestPhysicalTarget(oCreature, AI_RANGE_MELEE); if(oTarget != OBJECT_INVALID) { - if(ai_TryRapidShotFeat(oCreature, oTarget, nInMelee)) return; + if(ai_TryRangedTalents(oCreature, oTarget, nInMelee)) return; ai_ActionAttack(oCreature, AI_LAST_ACTION_RANGED_ATK, oTarget, nInMelee, TRUE); return; } diff --git a/_module/nss/ai_bloodmane.nss b/_module/nss/ai_bloodmane.nss new file mode 100644 index 0000000..456fbe4 --- /dev/null +++ b/_module/nss/ai_bloodmane.nss @@ -0,0 +1,38 @@ +/*//////////////////////////////////////////////////////////////////////////////////////////////////// +// Script Name: ai_bloodmane +////////////////////////////////////////////////////////////////////////////////////////////////////// + AI combat action scripts for Bloodmane - Orc Warlord(Barbarian - Example). + To use this AI set the variable string "AI_DEFAULT_SCRIPT" to "ai_bloodmane" on the creature. +*///////////////////////////////////////////////////////////////////////////////////////////////////// +// Programmer: Philos +////////////////////////////////////////////////////////////////////////////////////////////////////// +#include "0i_actions" +void main() +{ + object oCreature = OBJECT_SELF; + //************************************************************************** + //************************ START SPECIAL AI SCRIPTS ************************ + //************************************************************************** + int nRound = ai_GetCurrentRound(oCreature); + // First round cuss and animate! + if(nRound == 1) + { + // Make him taunt the player! + ActionPlayAnimation(ANIMATION_FIREFORGET_TAUNT); + PlayVoiceChat(Random(4), oCreature); + } + // Second round go into a Rage. + else if(nRound == 2) + { + // Use Rage! + if(ai_TryBarbarianRageFeat(oCreature)) return; + // If for some reason he doesn't have a rage then charge into melee! + object oTarget = ai_GetNearestTargetForMeleeCombat(oCreature, ai_GetNumOfEnemiesInRange(oCreature)); + if(oTarget != OBJECT_INVALID) ai_ActionAttack(oCreature, AI_LAST_ACTION_MELEE_ATK, oTarget); + // Change Bloodmane's ai to Barbarian since we are done with his special ai. + SetLocalString(oCreature, AI_COMBAT_SCRIPT, "ai_barbarian"); + } + //************************************************************************** + //************************ END SPECIAL AI SCRIPTS ************************** + //************************************************************************** +} diff --git a/_module/nss/ai_cleric.nss b/_module/nss/ai_cleric.nss index 34bd1e6..9b256c0 100644 --- a/_module/nss/ai_cleric.nss +++ b/_module/nss/ai_cleric.nss @@ -41,8 +41,8 @@ void main() { if(ai_HasRangedWeaponWithAmmo(oCreature)) { - if(!nInMelee) oTarget = ai_GetNearestTarget(oCreature); - else oTarget = ai_GetNearestTarget(oCreature, AI_RANGE_MELEE); + if(!nInMelee) oTarget = ai_GetNearestPhysicalTarget(oCreature); + else oTarget = ai_GetNearestPhysicalTarget(oCreature, AI_RANGE_MELEE); if(oTarget != OBJECT_INVALID) { ai_ActionAttack(oCreature, AI_LAST_ACTION_RANGED_ATK, oTarget, nInMelee, TRUE); diff --git a/_module/nss/ai_dragon_boss.nss b/_module/nss/ai_dragon_boss.nss new file mode 100644 index 0000000..fc85f9b --- /dev/null +++ b/_module/nss/ai_dragon_boss.nss @@ -0,0 +1,103 @@ +/*//////////////////////////////////////////////////////////////////////////////////////////////////// +// Script Name: ai_dragon_boss +////////////////////////////////////////////////////////////////////////////////////////////////////// + ai script a unique dragon that lives deep in a dark cave using it as a defense. + OBJECT_SELF is the dragon running the ai. +*///////////////////////////////////////////////////////////////////////////////////////////////////// +// Programmer: Philos +////////////////////////////////////////////////////////////////////////////////////////////////////// +#include "0i_actions" +void main() +{ + object oCreature = OBJECT_SELF; + // Get the number of enemies that we are in melee combat with. + int nInMelee = ai_GetNumOfEnemiesInRange(oCreature); + //************************************************************************** + //************************ ROUND BASED AI SCRIPTS ************************* + //************************************************************************** + int nRound = ai_GetCurrentRound(oCreature); + // First time fly to our enemy, the rest of combat lets not do that! + object oTarget; + if(!GetLocalInt(OBJECT_SELF, "AI_DONE_FLYING")) + { + SetLocalInt(OBJECT_SELF, "AI_DONE_FLYING", TRUE); + oTarget = ai_GetLowestCRTarget(oCreature); + // We assign the voice to the PC so they get to hear it. + object oPC = GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR, PLAYER_CHAR_IS_PC); + AssignCommand(oPC, PlaySound("vs_ndredm_bat2")); + // Can we do a crush attack(HD 18+)? + if(ai_TryCrushAttack(oCreature, oTarget)) return; + ai_FlyToTarget(oCreature, oTarget); + return; + } + else if(nRound == 2) + { + oTarget = ai_GetLowestCRTarget(oCreature, AI_RANGE_CLOSE); + ai_TryDragonBreathAttack(oCreature, nRound, oTarget); + return; + } + //*************************** HEALING & CURES **************************** + if(ai_TryHealingTalent(oCreature, nInMelee)) return; + if(ai_TryCureConditionTalent(oCreature, nInMelee)) return; + // Check to see if we need to retreat to get healing. + int nPercentageHP = ai_GetPercHPLoss(oCreature); + //ai_Debug("ai_dragon_boss", "43", "nPercentageHP: " + IntToString(nPercentageHP)); + if(nPercentageHP < 75 && !GetLocalInt(oCreature, "AI_HOME")) + { + string sWaypoint; + // If we are below half then go to last defensive position. + if(nPercentageHP < 50) + { + SetLocalInt(oCreature, "AI_HOME", TRUE); + sWaypoint = "0_wp_dragon2"; + } + // else we just go back a little bit to heal up. + else sWaypoint = "0_wp_dragon1"; + if(!GetLocalInt(oCreature, sWaypoint)) + { + string sVoice; + switch(d6()) + { + case 1 : + case 2 : sVoice = "vs_ndredm_attk"; break; + case 3 :sVoice = "vs_ndredm_heal"; break; + case 4 :sVoice = "vs_ndredm_help"; break; + case 5 :sVoice = "vs_ndredm_no"; break; + case 6 :sVoice = "vs_ndredm_bat3"; break; + } + SetImmortal(oCreature, TRUE); + DelayCommand(6.0f, SetImmortal(oCreature, FALSE)); + AssignCommand(ai_GetNearestTarget(oCreature), PlaySound(sVoice)); + object oWaypoint = GetNearestObjectByTag(sWaypoint); + //ai_Debug("ai_dragon_boss", "71", "Flying to " + sWaypoint + "."); + effect eFly = EffectDisappearAppear(GetLocation(oWaypoint)); + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eFly, oCreature, 6.0f); + SetLocalInt(oCreature, sWaypoint, TRUE); + return; + } + } + int nMaxLevel = ai_GetMonsterTalentMaxLevel(oCreature); + //******************* OFFENSIVE AREA OF EFFECT TALENTS ******************* + // Check the battlefield for a group of enemies to shoot a big talent at! + // We are checking here since these opportunities are rare and we need + // to take advantage of them as often as possible. + if(ai_UseCreatureTalent(oCreature, AI_TALENT_INDISCRIMINANT_AOE, nInMelee, nMaxLevel)) return; + if(ai_UseCreatureTalent(oCreature, AI_TALENT_DISCRIMINANT_AOE, nInMelee, nMaxLevel)) return; + //************************** DEFENSIVE TALENTS *************************** + if(ai_TryDefensiveTalents(oCreature, nInMelee, nMaxLevel, nRound)) return; + //********************** OFFENSIVE TARGETED TALENTS ********************** + // Look for a touch attack since we are in melee. + if(nInMelee > 0 && ai_UseCreatureTalent(oCreature, AI_TALENT_TOUCH, nInMelee, nMaxLevel)) return; + if(ai_UseCreatureTalent(oCreature, AI_TALENT_RANGED, nInMelee, nMaxLevel)) return; + // ************************ MELEE ATTACKS ******************************** + oTarget = ai_GetLowestCRTargetForMeleeCombat(oCreature, nInMelee); + if(oTarget != OBJECT_INVALID) + { + if(ai_TryDragonBreathAttack(oCreature, nRound)) return; + ai_TryWingAttacks(oCreature); + // If we don't do a Tail sweep attack(HD 30+) then see if we can do a Tail slap(HD 12+)! + if(!ai_TryTailSweepAttack(oCreature)) ai_TryTailSlap(oCreature); + ai_ActionAttack(oCreature, AI_LAST_ACTION_MELEE_ATK, oTarget); + } + else ai_SearchForHiddenCreature(oCreature, TRUE); +} diff --git a/_module/nss/ai_druid.nss b/_module/nss/ai_druid.nss index 7ec19fa..aebbb0e 100644 --- a/_module/nss/ai_druid.nss +++ b/_module/nss/ai_druid.nss @@ -24,14 +24,36 @@ void main() if(ai_UseCreatureTalent(oCreature, AI_TALENT_DISCRIMINANT_AOE, nInMelee, nMaxLevel)) return; //**************************** CLASS FEATURES **************************** if(GetLocalInt(GetModule(), AI_RULE_SUMMON_COMPANIONS) && ai_TrySummonAnimalCompanionTalent(oCreature)) return; - if(ai_TryPolymorphSelfFeat(oCreature)) return; //************************** DEFENSIVE TALENTS *************************** - int nRound = ai_GetCurrentRound(oCreature); - if(ai_TryDefensiveTalents(oCreature, nInMelee, nMaxLevel, nRound)) return; + // Get the Spell Level we should still cast before turning into our polymorph form. + int nSpellLevel = ai_GetHasPolymorphSelfFeat(oCreature); + if(AI_DEBUG) ai_Debug("ai_druid", "30", "nSpellLevel: " + IntToString(nSpellLevel)); + int nMaxTalentLevel = GetLocalInt(oCreature, AI_MAX_TALENT + AI_TALENT_SUMMON); + if(AI_DEBUG) ai_Debug("ai_druid", "32", "nMaxTalentLevel 'S' " + IntToString(nMaxTalentLevel)); + if(nSpellLevel < nMaxTalentLevel && + ai_UseCreatureTalent(oCreature, AI_TALENT_SUMMON, nInMelee, nMaxLevel)) return; + nMaxTalentLevel = GetLocalInt(oCreature, AI_MAX_TALENT + AI_TALENT_PROTECTION); + if(AI_DEBUG) ai_Debug("ai_druid", "36", "nMaxTalentLevel 'P' " + IntToString(nMaxTalentLevel)); + if(nSpellLevel < nMaxTalentLevel && + ai_UseCreatureTalent(oCreature, AI_TALENT_PROTECTION, nInMelee, nMaxLevel)) return; + nMaxTalentLevel = GetLocalInt(oCreature, AI_MAX_TALENT + AI_TALENT_ENHANCEMENT); + if(AI_DEBUG) ai_Debug("ai_druid", "40", "nMaxTalentLevel 'E' " + IntToString(nMaxTalentLevel)); + if(nSpellLevel < nMaxTalentLevel && + ai_UseCreatureTalent(oCreature, AI_TALENT_ENHANCEMENT, nInMelee, nMaxLevel)) return; //********************** OFFENSIVE TARGETED TALENTS ********************** // Look for a touch attack since we are in melee. - if(nInMelee > 0 && ai_UseCreatureTalent(oCreature, AI_TALENT_TOUCH, nInMelee, nMaxLevel)) return; - if(ai_UseCreatureTalent(oCreature, AI_TALENT_RANGED, nInMelee, nMaxLevel)) return; + if(nInMelee > 0) + { + nMaxTalentLevel = GetLocalInt(oCreature, AI_MAX_TALENT + AI_TALENT_TOUCH); + if(AI_DEBUG) ai_Debug("ai_druid", "48", "nMaxTalentLevel 'T' " + IntToString(nMaxTalentLevel)); + if(nSpellLevel < nMaxTalentLevel && + ai_UseCreatureTalent(oCreature, AI_TALENT_TOUCH, nInMelee, nMaxLevel)) return; + } + nMaxTalentLevel = GetLocalInt(oCreature, AI_MAX_TALENT + AI_TALENT_RANGED); + if(AI_DEBUG) ai_Debug("ai_druid", "53", "nMaxTalentLevel 'R' " + IntToString(nMaxTalentLevel)); + if(nSpellLevel < nMaxTalentLevel && + ai_UseCreatureTalent(oCreature, AI_TALENT_RANGED, nInMelee, nMaxLevel)) return; + if(ai_TryPolymorphSelfFeat(oCreature)) return; //**************************** SKILL FEATURES **************************** if(ai_TryAnimalEmpathy(oCreature)) return; // All else fails lets see if we have any good potions. @@ -43,10 +65,11 @@ void main() if(ai_HasRangedWeaponWithAmmo(oCreature)) { // Lets pick off the nearest targets. - if(!nInMelee) oTarget = ai_GetNearestTarget(oCreature); - else oTarget = ai_GetNearestTarget(oCreature, AI_RANGE_MELEE); + if(!nInMelee) oTarget = ai_GetNearestPhysicalTarget(oCreature); + else oTarget = ai_GetNearestPhysicalTarget(oCreature, AI_RANGE_MELEE); if(oTarget != OBJECT_INVALID) { + if(ai_TryRangedTalents(oCreature, oTarget, nInMelee)) return; ai_ActionAttack(oCreature, AI_LAST_ACTION_RANGED_ATK, oTarget, nInMelee, TRUE); return; } diff --git a/_module/nss/ai_fighter.nss b/_module/nss/ai_fighter.nss index 04f4ce0..9602923 100644 --- a/_module/nss/ai_fighter.nss +++ b/_module/nss/ai_fighter.nss @@ -36,11 +36,11 @@ void main() { if(ai_HasRangedWeaponWithAmmo(oCreature)) { - if(!nInMelee) oTarget = ai_GetNearestTarget(oCreature); - else oTarget = ai_GetNearestTarget(oCreature, AI_RANGE_MELEE); + if(!nInMelee) oTarget = ai_GetNearestPhysicalTarget(oCreature); + else oTarget = ai_GetNearestPhysicalTarget(oCreature, AI_RANGE_MELEE); if(oTarget != OBJECT_INVALID) { - if(ai_TryRapidShotFeat(oCreature, oTarget, nInMelee)) return; + if(ai_TryRangedTalents(oCreature, oTarget, nInMelee)) return; ai_ActionAttack(oCreature, AI_LAST_ACTION_RANGED_ATK, oTarget, nInMelee, TRUE); return; } @@ -54,7 +54,7 @@ void main() } // **************************** MELEE ATTACKS **************************** if(ai_InCombatEquipBestMeleeWeapon(oCreature)) return; - if(ai_TryWhirlwindFeat (oCreature)) return; + if(ai_TryWhirlwindFeat(oCreature)) return; oTarget = ai_GetNearestTargetForMeleeCombat (oCreature, nInMelee); if (oTarget != OBJECT_INVALID) { diff --git a/_module/nss/ai_flanker.nss b/_module/nss/ai_flanker.nss index 20a6538..86fc7a3 100644 --- a/_module/nss/ai_flanker.nss +++ b/_module/nss/ai_flanker.nss @@ -53,7 +53,7 @@ void main() oTarget = ai_GetFlankTarget(oCreature, AI_RANGE_MELEE); } // Ok we are in a serious fight so lets not give attack of opportunities. - else oTarget = ai_GetNearestTarget(oCreature, AI_RANGE_MELEE); + else oTarget = ai_GetNearestPhysicalTarget(oCreature, AI_RANGE_MELEE); } // If there are no enemies being attacked then lets stay back. if(oTarget == OBJECT_INVALID) @@ -75,10 +75,10 @@ void main() if(ai_HasRangedWeaponWithAmmo(oCreature)) { if(ai_TryRangedSneakAttack(oCreature, nInMelee)) return; - oTarget = ai_GetNearestTarget(oCreature); + oTarget = ai_GetNearestPhysicalTarget(oCreature); if(oTarget != OBJECT_INVALID) { - if(ai_TryRapidShotFeat(oCreature, oTarget, nInMelee)) return; + if(ai_TryRangedTalents(oCreature, oTarget, nInMelee)) return; ai_ActionAttack(oCreature, AI_LAST_ACTION_RANGED_ATK, oTarget, nInMelee, TRUE); return; } diff --git a/_module/nss/ai_incorporeal.nss b/_module/nss/ai_incorporeal.nss index cdd20bd..14c1a76 100644 --- a/_module/nss/ai_incorporeal.nss +++ b/_module/nss/ai_incorporeal.nss @@ -44,8 +44,8 @@ void main() { if (ai_TryRangedSneakAttack (oCreature, nInMelee)) return; string sIndex; - if (!nInMelee) oTarget = ai_GetNearestTarget(oCreature); - else oTarget = ai_GetNearestTarget (oCreature, AI_RANGE_MELEE); + if (!nInMelee) oTarget = ai_GetNearestPhysicalTarget(oCreature); + else oTarget = ai_GetNearestPhysicalTarget (oCreature, AI_RANGE_MELEE); if(oTarget != OBJECT_INVALID) { if(ai_TryRapidShotFeat (oCreature, oTarget, nInMelee)) return; @@ -63,19 +63,21 @@ void main() // ************************* MELEE ATTACKS ******************************* if(ai_InCombatEquipBestMeleeWeapon(oCreature)) return; oTarget = ai_GetNearestTargetForMeleeCombat (oCreature, nInMelee); - if (oTarget != OBJECT_INVALID) + if(oTarget != OBJECT_INVALID) { // If we are using our hands then do a touch attack instead. - if (GetItemInSlot (INVENTORY_SLOT_RIGHTHAND) == OBJECT_INVALID) + if(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND) == OBJECT_INVALID) { - if (GetItemInSlot (INVENTORY_SLOT_CWEAPON_L) != OBJECT_INVALID) + // If they don't have a claw then we need to do a special attack instead. + if(GetItemInSlot(INVENTORY_SLOT_CWEAPON_L) != OBJECT_INVALID) { // Randomize so they don't appear synchronized. float fDelay = IntToFloat(Random(2) + 1); DelayCommand(fDelay, ActionCastSpellAtObject (769/*Shadow_Attack*/, oTarget, METAMAGIC_ANY, TRUE)); ai_SetLastAction(oCreature, AI_LAST_ACTION_MELEE_ATK); - SetLocalObject (oCreature, AI_ATTACKED_PHYSICAL, oTarget); + SetLocalObject(oCreature, AI_ATTACKED_PHYSICAL, oTarget); } + else ai_ActionAttack(oCreature, AI_LAST_ACTION_MELEE_ATK, oTarget); } else ai_ActionAttack(oCreature, AI_LAST_ACTION_MELEE_ATK, oTarget); } diff --git a/_module/nss/ai_invisible.nss b/_module/nss/ai_invisible.nss index 7d42b21..7d8863a 100644 --- a/_module/nss/ai_invisible.nss +++ b/_module/nss/ai_invisible.nss @@ -47,11 +47,11 @@ void main() { if(ai_HasRangedWeaponWithAmmo(oCreature)) { - if(!nInMelee) oTarget = ai_GetNearestTarget(oCreature); - else oTarget = ai_GetNearestTarget(oCreature, AI_RANGE_MELEE); + if(!nInMelee) oTarget = ai_GetNearestPhysicalTarget(oCreature); + else oTarget = ai_GetNearestPhysicalTarget(oCreature, AI_RANGE_MELEE); if(oTarget != OBJECT_INVALID) { - if(ai_TryRapidShotFeat(oCreature, oTarget, nInMelee)) return; + if(ai_TryRangedTalents(oCreature, oTarget, nInMelee)) return; ai_ActionAttack(oCreature, AI_LAST_ACTION_RANGED_ATK, oTarget, nInMelee, TRUE); return; } diff --git a/_module/nss/ai_monk.nss b/_module/nss/ai_monk.nss index d6ff1b6..d087073 100644 --- a/_module/nss/ai_monk.nss +++ b/_module/nss/ai_monk.nss @@ -38,8 +38,8 @@ void main() { if(ai_HasRangedWeaponWithAmmo(oCreature)) { - if (!nInMelee) oTarget = ai_GetNearestTarget (oCreature); - else oTarget = ai_GetNearestTarget (oCreature, AI_RANGE_MELEE); + if (!nInMelee) oTarget = ai_GetNearestPhysicalTarget (oCreature); + else oTarget = ai_GetNearestPhysicalTarget (oCreature, AI_RANGE_MELEE); if(oTarget != OBJECT_INVALID) { ai_ActionAttack(oCreature, AI_LAST_ACTION_RANGED_ATK, oTarget, nInMelee, TRUE); diff --git a/_module/nss/ai_paladin.nss b/_module/nss/ai_paladin.nss index d45d223..46efe88 100644 --- a/_module/nss/ai_paladin.nss +++ b/_module/nss/ai_paladin.nss @@ -43,8 +43,8 @@ void main() if(ai_HasRangedWeaponWithAmmo(oCreature)) { // Paladins face the biggest challenges first! - if(!nInMelee) oTarget = ai_GetHighestCRTarget(oCreature); - else oTarget = ai_GetHighestCRTarget(oCreature, AI_RANGE_MELEE); + if(!nInMelee) oTarget = ai_GetHighestCRPhysicalTarget(oCreature); + else oTarget = ai_GetHighestCRPhysicalTarget(oCreature, AI_RANGE_MELEE); if(oTarget != OBJECT_INVALID) { ai_ActionAttack(oCreature, AI_LAST_ACTION_RANGED_ATK, oTarget, nInMelee, TRUE); diff --git a/_module/nss/ai_polymorphed.nss b/_module/nss/ai_polymorphed.nss index 9a7630a..6c1ab1f 100644 --- a/_module/nss/ai_polymorphed.nss +++ b/_module/nss/ai_polymorphed.nss @@ -8,16 +8,21 @@ // Programmer: Philos ////////////////////////////////////////////////////////////////////////////////////////////////////// #include "0i_actions" -void ai_DoActions(object oCreature, int nForm) +void main() { + object oCreature = OBJECT_SELF; int nInMelee = ai_GetNumOfEnemiesInRange(oCreature); object oNearestEnemy = GetLocalObject(oCreature, AI_ENEMY_NEAREST); if(ai_TryHealingTalent(oCreature, nInMelee)) return; if(ai_TryCureConditionTalent(oCreature, nInMelee)) return; if(GetPercentageHPLoss(oCreature) <= AI_HEALTH_BLOODY) { - if(AI_DEBUG) ai_Debug("ai_polymorphed", "19", "We are wounded and are transforming back!"); + if(AI_DEBUG) ai_Debug("ai_polymorphed", "20", "We are wounded and are transforming back!"); ai_RemoveASpecificEffect(oCreature, EFFECT_TYPE_POLYMORPH); + DeleteLocalInt(oCreature, AI_POLYMORPHED); + // We need to create the creatures normal forms talent list. + DelayCommand(0.0, ai_ClearTalents(oCreature)); + DelayCommand(0.1, ai_SetCreatureTalents(oCreature, TRUE, TRUE)); return; } int nMaxLevel = ai_GetMonsterTalentMaxLevel(oCreature); @@ -31,25 +36,30 @@ void ai_DoActions(object oCreature, int nForm) if(nInMelee > 0 && ai_UseCreatureTalent(oCreature, AI_TALENT_TOUCH, nInMelee, nMaxLevel)) return; if(ai_UseCreatureTalent(oCreature, AI_TALENT_RANGED, nInMelee, nMaxLevel)) return; // PHYSICAL ATTACKS - Either we don't have talents or we are saving them. - object oTarget = ai_GetNearestTargetForMeleeCombat(oCreature, nInMelee); - // If we don't find a target then we don't want to fight anyone! + // *************************** RANGED ATTACKS **************************** + object oTarget; + if(ai_CanIUseRangedWeapon(oCreature, nInMelee)) + { + if(ai_HasRangedWeaponWithAmmo(oCreature)) + { + if(!nInMelee) oTarget = ai_GetNearestPhysicalTarget(oCreature); + else oTarget = ai_GetNearestPhysicalTarget(oCreature, AI_RANGE_MELEE); + if(oTarget != OBJECT_INVALID) + { + if(ai_TryRangedTalents(oCreature, oTarget, nInMelee)) return; + ai_ActionAttack(oCreature, AI_LAST_ACTION_RANGED_ATK, oTarget, nInMelee, TRUE); + return; + } + else + { + ai_SearchForHiddenCreature(oCreature, TRUE); + return; + } + } + else if(ai_InCombatEquipBestRangedWeapon(oCreature)) return; + } + // **************************** MELEE ATTACKS **************************** + oTarget = ai_GetNearestTargetForMeleeCombat(oCreature, nInMelee); if(oTarget != OBJECT_INVALID) ai_ActionAttack(oCreature, AI_LAST_ACTION_MELEE_ATK, oTarget); else ai_SearchForHiddenCreature(oCreature, TRUE); } -void main() -{ - object oCreature = OBJECT_SELF; - // Need to know who we are so we can use thier abilities. - int nForm = GetAppearanceType(oCreature); - // Check to see if we are back to our normal form?(-1 to get the actual form #) - if(nForm == GetLocalInt(oCreature, AI_NORMAL_FORM) - 1) - { - // If we are transformed back then go back to our primary ai. - ai_SetCreatureAIScript(oCreature); - DeleteLocalInt(oCreature, AI_NORMAL_FORM); - string sAI = GetLocalString(oCreature, AI_COMBAT_SCRIPT); - if(sAI == "ai_polymorphed" || sAI == "") sAI = "ai_default"; - ExecuteScript(sAI, oCreature); - } - else ai_DoActions(oCreature, nForm); -} diff --git a/_module/nss/ai_ranged.nss b/_module/nss/ai_ranged.nss index 3a46228..d64fc0a 100644 --- a/_module/nss/ai_ranged.nss +++ b/_module/nss/ai_ranged.nss @@ -59,16 +59,16 @@ void main() if(oTarget == OBJECT_INVALID) oTarget = ai_GetNearestFavoredEnemyTarget(oCreature); if(oTarget == OBJECT_INVALID) oTarget == ai_GetRangedTarget(oCreature); if(oTarget == OBJECT_INVALID && ai_TryRangedSneakAttack(oCreature, nInMelee)) return; - if(oTarget == OBJECT_INVALID) oTarget = ai_GetNearestTarget(oCreature); + if(oTarget == OBJECT_INVALID) oTarget = ai_GetNearestPhysicalTarget(oCreature); } else { if(oTarget == OBJECT_INVALID) oTarget = ai_GetNearestFavoredEnemyTarget(oCreature, AI_RANGE_MELEE); - if(oTarget == OBJECT_INVALID) oTarget = ai_GetNearestTarget(oCreature, AI_RANGE_MELEE); + if(oTarget == OBJECT_INVALID) oTarget = ai_GetNearestPhysicalTarget(oCreature, AI_RANGE_MELEE); } if(oTarget != OBJECT_INVALID) { - if(ai_TryRapidShotFeat(oCreature, oTarget, nInMelee)) return; + if(ai_TryRangedTalents(oCreature, oTarget, nInMelee)) return; ai_ActionAttack(oCreature, AI_LAST_ACTION_RANGED_ATK, oTarget, nInMelee, TRUE); return; } @@ -78,7 +78,30 @@ void main() return; } } - else if(ai_InCombatEquipBestRangedWeapon(oCreature)) return; + else + { + if(ai_InCombatEquipBestRangedWeapon(oCreature)) return; + oTarget = ai_GetEnemyAttackingMe(oCreature); + if(oTarget != OBJECT_INVALID) + { + if(ai_InCombatEquipBestMeleeWeapon(oCreature)) return; + if(ai_TrySneakAttack(oCreature, nInMelee)) return; + if(ai_TryWhirlwindFeat(oCreature)) return; + ai_ActionAttack(oCreature, AI_LAST_ACTION_MELEE_ATK, oTarget); + return; + } + else + { + oTarget = ai_GetNearestFavoredEnemyTarget(oCreature); + if(oTarget == OBJECT_INVALID) oTarget = ai_GetNearestTargetForMeleeCombat(oCreature, nInMelee); + if(oTarget != OBJECT_INVALID) + { + if(ai_TryMeleeTalents(oCreature, oTarget)) return; + ai_ActionAttack(oCreature, AI_LAST_ACTION_MELEE_ATK, oTarget); + return; + } + } + } } // ************************** Melee feat attacks ************************* object oNearestEnemy = GetLocalObject(oCreature, AI_ENEMY_NEAREST); @@ -90,7 +113,12 @@ void main() if(ai_InCombatEquipBestMeleeWeapon(oCreature)) return; if(ai_TrySneakAttack(oCreature, nInMelee)) return; if(ai_TryWhirlwindFeat(oCreature)) return; - if(oTarget == OBJECT_INVALID) oTarget = ai_GetNearestFavoredEnemyTarget(oCreature); + ai_ActionAttack(oCreature, AI_LAST_ACTION_MELEE_ATK, oTarget); + return; + } + else + { + oTarget = ai_GetNearestFavoredEnemyTarget(oCreature); if(oTarget == OBJECT_INVALID) oTarget = ai_GetNearestTargetForMeleeCombat(oCreature, nInMelee); if(oTarget != OBJECT_INVALID) { diff --git a/_module/nss/ai_ranger.nss b/_module/nss/ai_ranger.nss index 5878cfb..08a6d5a 100644 --- a/_module/nss/ai_ranger.nss +++ b/_module/nss/ai_ranger.nss @@ -45,16 +45,16 @@ void main() if(!nInMelee) { oTarget = ai_GetNearestFavoredEnemyTarget(oCreature); - if(oTarget == OBJECT_INVALID) oTarget = ai_GetNearestTarget(oCreature); + if(oTarget == OBJECT_INVALID) oTarget = ai_GetNearestPhysicalTarget(oCreature); } else { oTarget = ai_GetNearestFavoredEnemyTarget(oCreature, AI_RANGE_MELEE); - if(oTarget == OBJECT_INVALID) oTarget = ai_GetNearestTarget(oCreature, AI_RANGE_MELEE); + if(oTarget == OBJECT_INVALID) oTarget = ai_GetNearestPhysicalTarget(oCreature, AI_RANGE_MELEE); } if(oTarget != OBJECT_INVALID) { - if(ai_TryRapidShotFeat(oCreature, oTarget, nInMelee)) return; + if(ai_TryRangedTalents(oCreature, oTarget, nInMelee)) return; ai_ActionAttack(oCreature, AI_LAST_ACTION_RANGED_ATK, oTarget, nInMelee, TRUE); return; } diff --git a/_module/nss/ai_rogue.nss b/_module/nss/ai_rogue.nss index 81c4500..ed270d4 100644 --- a/_module/nss/ai_rogue.nss +++ b/_module/nss/ai_rogue.nss @@ -38,7 +38,7 @@ void main() if(ai_HasRangedWeaponWithAmmo(oCreature)) { if (ai_TryRangedSneakAttack (oCreature, nInMelee)) return; - oTarget = ai_GetNearestTarget (oCreature); + oTarget = ai_GetNearestPhysicalTarget (oCreature); if(oTarget != OBJECT_INVALID) { if (ai_TryRapidShotFeat (oCreature, oTarget, nInMelee)) return; diff --git a/_module/nss/ai_shadow.nss b/_module/nss/ai_shadow.nss index 3d6419f..e708d27 100644 --- a/_module/nss/ai_shadow.nss +++ b/_module/nss/ai_shadow.nss @@ -38,11 +38,11 @@ void main() if(ai_HasRangedWeaponWithAmmo(oCreature)) { string sIndex; - if(!nInMelee) oTarget = ai_GetNearestTarget(oCreature); - else oTarget = ai_GetNearestTarget(oCreature, AI_RANGE_MELEE); + if(!nInMelee) oTarget = ai_GetNearestPhysicalTarget(oCreature); + else oTarget = ai_GetNearestPhysicalTarget(oCreature, AI_RANGE_MELEE); if(oTarget != OBJECT_INVALID) { - if(ai_TryRapidShotFeat(oCreature, oTarget, nInMelee)) return; + if(ai_TryRangedTalents(oCreature, oTarget, nInMelee)) return; ai_ActionAttack(oCreature, AI_LAST_ACTION_RANGED_ATK, oTarget, nInMelee, TRUE); return; } diff --git a/_module/nss/ai_sorcerer.nss b/_module/nss/ai_sorcerer.nss index f1fdcc3..afbf502 100644 --- a/_module/nss/ai_sorcerer.nss +++ b/_module/nss/ai_sorcerer.nss @@ -37,8 +37,8 @@ void main() { if(ai_HasRangedWeaponWithAmmo(oCreature)) { - if(!nInMelee) oTarget = ai_GetNearestTarget(oCreature); - else oTarget = ai_GetNearestTarget(oCreature, AI_RANGE_MELEE); + if(!nInMelee) oTarget = ai_GetNearestPhysicalTarget(oCreature); + else oTarget = ai_GetNearestPhysicalTarget(oCreature, AI_RANGE_MELEE); if(oTarget != OBJECT_INVALID) { ai_ActionAttack(oCreature, AI_LAST_ACTION_RANGED_ATK, oTarget, nInMelee, TRUE); diff --git a/_module/nss/ai_taunter.nss b/_module/nss/ai_taunter.nss index 825d025..89aae52 100644 --- a/_module/nss/ai_taunter.nss +++ b/_module/nss/ai_taunter.nss @@ -49,11 +49,11 @@ void main() { if(ai_HasRangedWeaponWithAmmo(oCreature)) { - if (!nInMelee) oTarget = ai_GetNearestTarget (oCreature); - else oTarget = ai_GetNearestTarget (oCreature, AI_RANGE_MELEE); + if (!nInMelee) oTarget = ai_GetNearestPhysicalTarget (oCreature); + else oTarget = ai_GetNearestPhysicalTarget (oCreature, AI_RANGE_MELEE); if(oTarget != OBJECT_INVALID) { - if(ai_TryRapidShotFeat(oCreature, oTarget, nInMelee)) return; + if(ai_TryRangedTalents(oCreature, oTarget, nInMelee)) return; ai_ActionAttack(oCreature, AI_LAST_ACTION_RANGED_ATK, oTarget, nInMelee, TRUE); return; } diff --git a/_module/nss/ai_wizard.nss b/_module/nss/ai_wizard.nss index 6baa4c8..082cde4 100644 --- a/_module/nss/ai_wizard.nss +++ b/_module/nss/ai_wizard.nss @@ -39,8 +39,8 @@ void main() { if(ai_HasRangedWeaponWithAmmo(oCreature)) { - if(!nInMelee) oTarget = ai_GetNearestTarget(oCreature); - else oTarget = ai_GetNearestTarget(oCreature, AI_RANGE_MELEE); + if(!nInMelee) oTarget = ai_GetNearestPhysicalTarget(oCreature); + else oTarget = ai_GetNearestPhysicalTarget(oCreature, AI_RANGE_MELEE); if(oTarget != OBJECT_INVALID) { ai_ActionAttack(oCreature, AI_LAST_ACTION_RANGED_ATK, oTarget, nInMelee, TRUE); diff --git a/_module/nss/mm_prc_spells.nss b/_module/nss/mm_prc_spells.nss index 4aeb8e0..9b542bc 100644 --- a/_module/nss/mm_prc_spells.nss +++ b/_module/nss/mm_prc_spells.nss @@ -3,7 +3,7 @@ int StartingUp(object oPC); json ai_CheckToReplaceSpell(json jSpellList, int nClass, int nLevel, int nSlot) { - //if(d100() > 49) return jSpellList; + if(d100() > 49) return jSpellList; string sSpellTableColumn = Get2DAString("classes", "SpellTableColumn", nClass); int nRoll = d10() + 1 + nLevel * 10; int nSpell = StringToInt(Get2DAString("prc_add_spells", sSpellTableColumn, nRoll)); diff --git a/_module/nss/nw_c2_default1.nss b/_module/nss/nw_c2_default1.nss index 6d717da..fc8f361 100644 --- a/_module/nss/nw_c2_default1.nss +++ b/_module/nss/nw_c2_default1.nss @@ -35,6 +35,7 @@ void main() } } // Send the user-defined event signal if specified here so it doesn't get skipped. + //SendMessageToPC(GetFirstPC(), "HB_EVENT: " + IntToString(GetSpawnInCondition(NW_FLAG_HEARTBEAT_EVENT))); if(GetSpawnInCondition(NW_FLAG_HEARTBEAT_EVENT)) { SignalEvent(oCreature, EventUserDefined(EVENT_HEARTBEAT)); @@ -76,17 +77,9 @@ void main() ai_ClearBuffTargets(oCreature, "AI_ALLY_TARGET_"); } } - if(!IsInConversation (oCreature)) - { - if(GetWalkCondition(NW_WALK_FLAG_CONSTANT)) WalkWayPoints(); - if(GetSpawnInCondition(NW_FLAG_AMBIENT_ANIMATIONS)) PlayMobileAmbientAnimations_NonAvian(); - else if(GetSpawnInCondition(NW_FLAG_AMBIENT_ANIMATIONS_AVIAN)) PlayMobileAmbientAnimations_Avian(); - else if(GetSpawnInCondition(NW_FLAG_IMMOBILE_AMBIENT_ANIMATIONS)) PlayImmobileAmbientAnimations(); - else if(GetLocalInt(GetModule(), AI_RULE_WANDER) && GetStandardFactionReputation(STANDARD_FACTION_HOSTILE, oCreature) > 89) - { - ai_AmbientAnimations(); - } - } if(ai_TryHealing(oCreature, oCreature)) return; + // This is where PEPS passes control to either the Bioware Waypoint system and + // AmbientAnimation scripts. A Persistent World can write there own scripts in 0e_animations. + ExecuteScript("0e_animations", oCreature); } diff --git a/_module/nss/nw_c2_default3.nss b/_module/nss/nw_c2_default3.nss index 6e36412..d95a483 100644 --- a/_module/nss/nw_c2_default3.nss +++ b/_module/nss/nw_c2_default3.nss @@ -22,7 +22,7 @@ void main() " Current action: " + IntToString(GetCurrentAction(oCreature))); if(GetSpawnInCondition(NW_FLAG_END_COMBAT_ROUND_EVENT)) { - SignalEvent(OBJECT_SELF, EventUserDefined(1003)); + SignalEvent(OBJECT_SELF, EventUserDefined(EVENT_END_COMBAT_ROUND)); } if(ai_Disabled(oCreature)) return; // Action modes get cleared prior to each OnCombatRoundEnd! @@ -59,7 +59,7 @@ void main() } if(ai_GetIsInCombat(oCreature)) { - ai_DoAssociateCombatRound (oCreature); + ai_DoMonsterCombatRound (oCreature); return; } if(ai_GetBehaviorState(NW_FLAG_BEHAVIOR_SPECIAL)) ai_DetermineSpecialBehavior(oCreature); diff --git a/_module/nss/nw_c2_default4.nss b/_module/nss/nw_c2_default4.nss index 38603f1..c7df7e2 100644 --- a/_module/nss/nw_c2_default4.nss +++ b/_module/nss/nw_c2_default4.nss @@ -12,6 +12,7 @@ void ai_MonsterCommands(object oCreature, object oSpeaker, int nMatch); void main() { object oCreature = OBJECT_SELF; + object oLastSpeaker = GetLastSpeaker(); ExecuteScript("prc_npc_conv", oCreature); if(AI_DEBUG) ai_Debug("nw_c2_default4", "15", GetName(oCreature) + " listens " + IntToString(GetListenPatternNumber()) + " to " + GetName(GetLastSpeaker()) + "." + @@ -22,7 +23,7 @@ void main() ai_DoMonsterCombatRound(oCreature); return; } - object oLastSpeaker = GetLastSpeaker(); + //object oLastSpeaker = GetLastSpeaker(); int nMatch = GetListenPatternNumber(); if(nMatch != -1) { diff --git a/_module/nss/nw_ch_ac1.nss b/_module/nss/nw_ch_ac1.nss index 6ed2fea..5bae2be 100644 --- a/_module/nss/nw_ch_ac1.nss +++ b/_module/nss/nw_ch_ac1.nss @@ -59,6 +59,8 @@ void main() string sAssociateType = ai_GetAssociateType(oMaster, oCreature); ai_CheckAssociateData(oMaster, oCreature, sAssociateType); ai_CheckPCStart(oMaster); + // When a henchman dies and is brought back the plot flag can be set to TRUE! + SetPlotFlag(oCreature, FALSE); if(AI_HENCHMAN_WIDGET) { // This keeps widgets from disappearing and reappearing. diff --git a/_module/nss/nw_ch_ac3.nss b/_module/nss/nw_ch_ac3.nss index 9eb3406..2141565 100644 --- a/_module/nss/nw_ch_ac3.nss +++ b/_module/nss/nw_ch_ac3.nss @@ -37,6 +37,14 @@ void main() case ACTION_CASTSPELL : case ACTION_ITEMCASTSPELL : case ACTION_COUNTERSPELL : return; + case ACTION_ATTACKOBJECT : + { + if(!ai_GetIsInCombat(oCreature)) + { + ai_ClearCreatureActions(); + return; + } + } // Might be doing a special action that is not a defined action. case ACTION_INVALID : { diff --git a/_module/nss/nw_ch_acb.nss b/_module/nss/nw_ch_acb.nss index ec96e77..9030505 100644 --- a/_module/nss/nw_ch_acb.nss +++ b/_module/nss/nw_ch_acb.nss @@ -27,7 +27,10 @@ void main() int nSpell = GetLastSpell(); if(AI_DEBUG) ai_Debug("nw_ch_acb", "21", GetName(OBJECT_SELF) + " has been hit by a harmful spell(" + Get2DAString("spells", "Label", nSpell) + ")!"); - if(ai_GetInAOEReaction(oCreature, oCaster, nSpell) && + object oMaster = GetMaster(oCreature); + if((!GetLocalInt(oMaster, AI_TARGET_MODE_ON) || + GetLocalObject(oMaster, AI_TARGET_MODE_ASSOCIATE) != oCreature) && + ai_GetInAOEReaction(oCreature, oCaster, nSpell) && ai_IsInADangerousAOE(oCreature, AI_RANGE_BATTLEFIELD, TRUE)) return; if(ai_GetIsBusy(oCreature)) return; if(ai_CheckForCombat(oCreature, FALSE)) return; diff --git a/_module/nss/pc_savebuffs.nss b/_module/nss/pc_savebuffs.nss index 96b42d0..00e6401 100644 --- a/_module/nss/pc_savebuffs.nss +++ b/_module/nss/pc_savebuffs.nss @@ -26,73 +26,82 @@ json GetBuffDatabaseJson(object oPlayer, string sDataField, string sTag = ""); // Returns the level if this spell has a domain spell on nLevel, or 0. int GetHasDomainSpell(object oCaster, int nClass, int nLevel, int nSpell); -// We do some crazy hack to get all the correct information when casting spells. -// GetLastSpellCastClass() will only give the class if this script is running -// on the actual caster, i.e. our PC. -// GetLastSpellLevel() will only give the level if this script is running on -// the actual caster, i.e. our PC. -// So for this to work we run this scrip in the event OnSpellCastAt of our -// target, then we ExecuteScript this script again with the Caster (oPC) -// as OBJECT_SELF for this script on its second pass. This allows us to get the -// information from the above functions! Neat! void main() { object oTarget = OBJECT_SELF; - // The first pass we get oCaster via GetLastSpellCaster() fails in ExecuteScript! - // The second pass we get oCaster via the variable "AI_BUFF_CASTER". - object oCaster = GetLocalObject(oTarget, "AI_BUFF_CASTER"); - if(oCaster == OBJECT_INVALID) oCaster = GetLastSpellCaster(); - // We setting up the save spells button we saved the PC to itself. - // Here we get the PC to make sure the caster of this spell is our saving PC. - object oPC = GetLocalObject(oCaster, "AI_BUFF_PC"); - // The first pass we get nspell via GetLastSpell() fails in ExecuteScript! - // The second pass we get nSpell via the variable "AI_BUFF_SPELL". - int nSpell = GetLocalInt(oTarget, "AI_BUFF_SPELL"); - if(nSpell == 0) nSpell = GetLastSpell(); - // If this is a harful spell or The caster does not equal our saving PC then - // we need to fix the targets scripts back and run the correct OnSpellCastAt script. - if(GetLastSpellHarmful() || oPC != oCaster) + object oCaster = GetLastSpellCaster(); + // When setting up the save spells button we saved the PC to itself. + // Here we get the PC from either our henchmen or ourselves. + // We do this to make sure that this PC and henchmen are the ones saving spells. + object oPC = GetLocalObject(ai_GetPlayerMaster(oCaster), "AI_BUFF_PC"); + // If this is a harmful spell or we couldn't find oPC then we need to fix + // the targets scripts back and run the correct OnSpellCastAt script. + if(GetLastSpellHarmful() || oPC == OBJECT_INVALID) { - string sScript = GetLocalString(oTarget, "AI_BUFF_CAST_AT_SCRIPT"); - SetEventScript(oTarget, EVENT_SCRIPT_CREATURE_ON_SPELLCASTAT, sScript); + DeleteLocalObject(oPC, "AI_BUFF_PC"); + string sScript = GetLocalString(oPC, "AI_BUFF_CAST_AT_SCRIPT"); + SetEventScript(oPC, EVENT_SCRIPT_CREATURE_ON_SPELLCASTAT, sScript); + DeleteLocalString(oPC, "AI_BUFF_CAST_AT_SCRIPT"); + // Cleanup your followers to allow spells to be reacted to as normal. + int nAssociateType = 2; + object oAssociate = GetAssociate(nAssociateType, oPC); + while(nAssociateType < 5) + { + if(oAssociate != OBJECT_INVALID) + { + sScript = GetLocalString(oAssociate, "AI_BUFF_CAST_AT_SCRIPT"); + SetEventScript(oAssociate, EVENT_SCRIPT_CREATURE_ON_SPELLCASTAT, sScript); + DeleteLocalString(oAssociate, "AI_BUFF_CAST_AT_SCRIPT"); + } + oAssociate = GetAssociate(++nAssociateType, oPC); + } + int nIndex = 1; + oAssociate = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC, nIndex); + while(nIndex <= AI_MAX_HENCHMAN) + { + if(oAssociate != OBJECT_INVALID) + { + sScript = GetLocalString(oAssociate, "AI_BUFF_CAST_AT_SCRIPT"); + SetEventScript(oAssociate, EVENT_SCRIPT_CREATURE_ON_SPELLCASTAT, sScript); + DeleteLocalString(oAssociate, "AI_BUFF_CAST_AT_SCRIPT"); + } + oAssociate = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC, ++nIndex); + } + NuiSetBind(oPC, NuiFindWindow(oPC, "widgetbuffwin"), "btn_save", JsonBool(FALSE)); + ai_SendMessages("Saving spells to the list has been turned off.", AI_COLOR_YELLOW, oPC); ExecuteScript(sScript, oTarget); return; } - // If the oTarget != oCaster then we are casting a spell on one of our - // associates. We must make a second pass to get the correct information. - // We do this by saving the Target, Caster, and Spell so we can get them - // in the second pass as Execute Script makes them impossible to get on a - // second pass. - if(oTarget != oCaster) - { - SetLocalObject(oPC, "AI_BUFF_TARGET", oTarget); - SetLocalObject(oPC, "AI_BUFF_CASTER", oCaster); - SetLocalInt(oPC, "AI_BUFF_SPELL", nSpell); - ExecuteScript("pc_savebuffs", oPC); - return; - } - // If this is the first pass and we get here then oCaster is casting a spell - // on themselves. So oTarget will be invalid and we should use oPC. - // If this is the second pass and we get here then we have saved oTarget - // to oPC and this will get them so we can save the target to the spell! - oTarget = GetLocalObject(oPC, "AI_BUFF_TARGET"); - if(oTarget == OBJECT_INVALID) oTarget = oPC; - // We need to clean up this mess! - DeleteLocalObject(oPC, "AI_BUFF_TARGET"); - DeleteLocalObject(oPC, "AI_BUFF_CASTER"); - DeleteLocalInt(oPC, "AI_BUFF_SPELL"); // This blocks one spell from saving multiple times due to being an AOE. if(GetLocalInt(oPC, "AI_ONLY_ONE")) return; SetLocalInt(oPC, "AI_ONLY_ONE", TRUE); // We delay this for just less than half a round due to haste. DelayCommand(2.5, DeleteLocalInt(oPC, "AI_ONLY_ONE")); - // Here is the whole problem and why we must do a second pass if the target - // is not the caster. These only work if this script is run by the caster. - int nClass = GetLastSpellCastClass(); - int nLevel = GetLastSpellLevel(); - // Everything below saves the spell to the database with all our now correct info. - int nDomain = GetHasDomainSpell(oPC, nClass, nLevel, nSpell); - int nMetaMagic = GetMetaMagicFeat(); + // If the oTarget != oCaster then we are casting a spell on one of our + // associates. Some functions expect OBJECT_SELF to be the caster. + // We get around that by doing some ExecuteScriptChunk shenanigans. + int nClass, nLevel, nMetaMagic; + if(oTarget != oCaster) + { + // These functions need the caster to be OBJECT_SELF so lets do a HACK! + ExecuteScriptChunk("SetLocalInt(OBJECT_SELF, \"AI_BUFF_CASTCLASS\", GetLastSpellCastClass());", oCaster); + ExecuteScriptChunk("SetLocalInt(OBJECT_SELF, \"AI_BUFF_SPELLLEVEL\", GetLastSpellLevel());", oCaster); + ExecuteScriptChunk("SetLocalInt(OBJECT_SELF, \"AI_BUFF_METAMAGIC\", GetMetaMagicFeat());", oCaster); + nClass = GetLocalInt(oCaster, "AI_BUFF_CASTCLASS"); + nLevel = GetLocalInt(oCaster, "AI_BUFF_SPELLLEVEL"); + nMetaMagic = GetLocalInt(oCaster, "AI_METAMAGIC"); + DeleteLocalInt(oCaster, "AI_BUFF_CASTCLASS"); + DeleteLocalInt(oCaster, "AI_BUFF_SPELLLEVEL"); + DeleteLocalInt(oCaster, "AI_BUFF_METAMAGIC"); + } + else + { + nClass = GetLastSpellCastClass(); + nLevel = GetLastSpellLevel(); + nMetaMagic = GetMetaMagicFeat(); + } + int nSpell = GetLastSpell(); + int nDomain = GetHasDomainSpell(oCaster, nClass, nLevel, nSpell); string sName = GetStringByStrRef(StringToInt(Get2DAString("spells", "Name", nSpell))); if(nDomain) sName += " [Domain]"; if(nMetaMagic > 0 && StringToInt(Get2DAString("classes", "MemorizesSpells", nClass))) @@ -114,11 +123,13 @@ void main() jSpell = JsonArrayInsert(jSpell, JsonInt(nLevel)); jSpell = JsonArrayInsert(jSpell, JsonInt(nMetaMagic)); jSpell = JsonArrayInsert(jSpell, JsonInt(nDomain)); - string sTargetName = ai_RemoveIllegalCharacters(ai_StripColorCodes(GetName(oTarget, TRUE))); + string sCasterName = ai_RemoveIllegalCharacters(ai_StripColorCodes(GetName(oCaster))); + jSpell = JsonArrayInsert(jSpell, JsonString(sCasterName)); + string sTargetName = ai_RemoveIllegalCharacters(ai_StripColorCodes(GetName(oTarget))); jSpell = JsonArrayInsert(jSpell, JsonString(sTargetName)); - jSpell = JsonArrayInsert(jSpells, jSpell); + jSpells = JsonArrayInsert(jSpells, jSpell); SetBuffDatabaseJson(oPC, "spells", jSpells, sList); - SendMessageToPC(oPC, sName + " has been saved for fast buffing on " + sTargetName + "."); + SendMessageToPC(oPC, sCasterName + " has cast " + sName + " to be saved for fast buffing on " + sTargetName + "."); ExecuteScript("pi_buffing", oPC); } string GetBuffDatabaseString(object oPlayer, string sDataField, string sTag) diff --git a/_module/nss/pe_buffing.nss b/_module/nss/pe_buffing.nss index a6c4050..8f3262e 100644 --- a/_module/nss/pe_buffing.nss +++ b/_module/nss/pe_buffing.nss @@ -45,24 +45,22 @@ void main() // Watch to see if the window moves and save. if(sElem == "window_geometry" && sEvent == "watch") { - if(!GetLocalInt (oPC, AI_NO_NUI_SAVE)) + if(GetLocalInt (oPC, AI_NO_NUI_SAVE)) return; + // Get the height, width, x, and y of the window. + json jGeom = NuiGetBind(oPC, nToken, "window_geometry"); + // Save on the player using the sWndId. + json jMenuData = GetBuffDatabaseJson(oPC, "spells", "menudata"); + if(sWndId == "plbuffwin") { - // Get the height, width, x, and y of the window. - json jGeom = NuiGetBind(oPC, nToken, "window_geometry"); - // Save on the player using the sWndId. - json jMenuData = GetBuffDatabaseJson(oPC, "spells", "menudata"); - if(sWndId == "plbuffwin") - { - jMenuData = JsonArraySet(jMenuData, 1, JsonObjectGet(jGeom, "x")); - jMenuData = JsonArraySet(jMenuData, 2, JsonObjectGet(jGeom, "y")); - } - else if(sWndId == "widgetbuffwin") - { - jMenuData = JsonArraySet(jMenuData, 5, JsonObjectGet(jGeom, "x")); - jMenuData = JsonArraySet(jMenuData, 6, JsonObjectGet(jGeom, "y")); - } - SetBuffDatabaseJson(oPC, "spells", jMenuData, "menudata"); + jMenuData = JsonArraySet(jMenuData, 1, JsonObjectGet(jGeom, "x")); + jMenuData = JsonArraySet(jMenuData, 2, JsonObjectGet(jGeom, "y")); } + else if(sWndId == "widgetbuffwin") + { + jMenuData = JsonArraySet(jMenuData, 5, JsonObjectGet(jGeom, "x")); + jMenuData = JsonArraySet(jMenuData, 6, JsonObjectGet(jGeom, "y")); + } + SetBuffDatabaseJson(oPC, "spells", jMenuData, "menudata"); return; } //************************************************************************** @@ -175,6 +173,7 @@ void main() } else if(sEvent == "watch") { + if(GetLocalInt (oPC, AI_NO_NUI_SAVE)) return; if(sElem == "buff_widget_check") { int bBuffWidget = JsonGetInt(NuiGetBind(oPC, nToken, "buff_widget_check")); @@ -184,7 +183,7 @@ void main() if(bBuffWidget) PopupWidgetBuffGUIPanel(oPC); else NuiDestroy(oPC, NuiFindWindow(oPC, "widgetbuffwin")); } - if(sElem == "lock_buff_widget_check") + else if(sElem == "lock_buff_widget_check") { int bBuffLockWidget = JsonGetInt(NuiGetBind(oPC, nToken, "lock_buff_widget_check")); json jMenuData = GetBuffDatabaseJson(oPC, "spells", "menudata"); @@ -194,11 +193,20 @@ void main() NuiSetBind(oPC, nToken, "buff_widget_check", JsonBool(TRUE)); PopupWidgetBuffGUIPanel(oPC); } - if(sElem == "chbx_no_monster_check_check") + else if(sElem == "chbx_no_monster_check_check") { int bNoCheckMonsters = JsonGetInt(NuiGetBind(oPC, nToken, sElem)); SetLocalInt(oPC, FB_NO_MONSTER_CHECK, bNoCheckMonsters); } + else if(sElem == "txt_spell_delay") + { + string sDelay = JsonGetString(NuiGetBind(oPC, nToken, "txt_spell_delay")); + float fDelay = StringToFloat(sDelay); + if(fDelay < 0.1f) fDelay = 0.1f; + if(fDelay > 6.0f) fDelay = 6.0f; + sDelay = FloatToString(fDelay, 0, 1); + SetBuffDatabaseString(oPC, "spells", sDelay, "Delay"); + } } } //************************************************************************** @@ -259,13 +267,12 @@ json GetBuffDatabaseJson (object oPlayer, string sDataField, string sTag) if(SqlStep(sql)) return SqlGetJson(sql, 0); else return JsonArray(); } -void CastBuffSpell (object oPC, object oTarget, int nSpell, int nClass, int nMetamagic, int nDomain, string sList, string sName) +void CastBuffSpell(object oPC, object oCaster, object oTarget, int nSpell, int nClass, int nMetamagic, int nDomain, string sList, string sName, int bInstantSpell) { - string sTargetName; - if(oPC == oTarget) sTargetName = "myself."; - else sTargetName = GetName(oTarget); - ai_SendMessages("Quick Buffing: " + sName + " on " + sTargetName, AI_COLOR_GREEN, oPC); - AssignCommand(oPC, ActionCastSpellAtObject(nSpell, oTarget, nMetamagic, FALSE, nDomain, 0, TRUE, nClass)); + string sCasterName = GetName(oCaster); + string sTargetName = GetName(oTarget); + ai_SendMessages(sCasterName + " is quick buffing " + sName + " on " + sTargetName, AI_COLOR_GREEN, oPC); + AssignCommand(oCaster, ActionCastSpellAtObject(nSpell, oTarget, nMetamagic, FALSE, nDomain, 0, bInstantSpell, nClass)); } void CastSavedBuffSpells(object oPC) { @@ -314,7 +321,10 @@ void CastSavedBuffSpells(object oPC) if(fDistance > 30.0f || fDistance == 0.0) { string sName; - float fDelay = 0.1f; + float fDelay; + float fDelayIncrement = StringToFloat(GetBuffDatabaseString(oPC, "spells", "Delay"));; + int bInstantSpell; + if(fDelayIncrement < 3.0f) bInstantSpell = TRUE; int nSpell, nClass, nLevel, nMetamagic, nDomain, nSpellReady, nIndex = 0; json jMenuData = GetBuffDatabaseJson(oPC, "spells", "menudata"); string sList = JsonGetString(JsonArrayGet(jMenuData, 0)); @@ -329,58 +339,78 @@ void CastSavedBuffSpells(object oPC) nLevel = JsonGetInt(JsonArrayGet(jSpell, 2)); nMetamagic = JsonGetInt(JsonArrayGet(jSpell, 3)); nDomain = JsonGetInt(JsonArrayGet(jSpell, 4)); - // We save the target's name then look them up by it. - string sTargetName = JsonGetString(JsonArrayGet(jSpell, 5)); - object oTarget; - location lLocation = GetLocation(oPC); - if(sTargetName == "" || sTargetName == ai_RemoveIllegalCharacters(ai_StripColorCodes(GetName (oPC)))) oTarget = oPC; - else - { - oTarget = GetFirstObjectInShape(SHAPE_SPHERE, 10.0, lLocation, TRUE); - while(oTarget != OBJECT_INVALID) - { - if(sTargetName == ai_RemoveIllegalCharacters(ai_StripColorCodes(GetName(oTarget)))) break; - oTarget = GetNextObjectInShape(SHAPE_SPHERE, 10.0, lLocation, TRUE); - } - } sName = GetStringByStrRef(StringToInt(Get2DAString("spells", "Name", nSpell))); - if(oTarget == OBJECT_INVALID) + location lLocation = GetLocation(oPC); + // Saved the Caster's name so we can find them to cast the spell. + string sCasterName = JsonGetString(JsonArrayGet(jSpell, 5)); + object oCaster; + if(sCasterName == "" || sCasterName == ai_RemoveIllegalCharacters(ai_StripColorCodes(GetName(oPC)))) oCaster = oPC; + else { - DelayCommand(fDelay, ai_SendMessages("Cannot quick cast " + sName + " because the " + sTargetName + " is not here!", AI_COLOR_RED, oPC)); + oCaster = GetFirstObjectInShape(SHAPE_SPHERE, 20.0, lLocation, TRUE); + while(oCaster != OBJECT_INVALID) + { + if(sCasterName == ai_RemoveIllegalCharacters(ai_StripColorCodes(GetName(oCaster)))) break; + oCaster = GetNextObjectInShape(SHAPE_SPHERE, 20.0, lLocation, TRUE); + } + } + if(oCaster == OBJECT_INVALID) + { + DelayCommand(fDelay, ai_SendMessages("Cannot quick cast " + sName + " because the " + sCasterName + " is not here!", AI_COLOR_RED, oPC)); } else { - if(nMetamagic > 0) + // Saved the target's name so we can find them to cast the spell on. + string sTargetName = JsonGetString(JsonArrayGet(jSpell, 6)); + object oTarget; + if(sTargetName == "" || sTargetName == ai_RemoveIllegalCharacters(ai_StripColorCodes(GetName(oPC)))) oTarget = oPC; + else { - if(nMetamagic == METAMAGIC_EMPOWER) sName += " (Empowered)"; - else if(nMetamagic == METAMAGIC_EXTEND) sName += " (Extended)"; - else if(nMetamagic == METAMAGIC_MAXIMIZE) sName += " (Maximized)"; - else if(nMetamagic == METAMAGIC_QUICKEN) sName += " (Quickened)"; - else if(nMetamagic == METAMAGIC_SILENT) sName += " (Silent)"; - else if(nMetamagic == METAMAGIC_STILL) sName += " (Still)"; + oTarget = GetFirstObjectInShape(SHAPE_SPHERE, 20.0, lLocation, TRUE); + while(oTarget != OBJECT_INVALID) + { + if(sTargetName == ai_RemoveIllegalCharacters(ai_StripColorCodes(GetName(oTarget)))) break; + oTarget = GetNextObjectInShape(SHAPE_SPHERE, 20.0, lLocation, TRUE); + } } - nSpellReady = GetSpellReady(oPC, nSpell, nClass, nLevel, nMetamagic, nDomain); - if(nSpellReady == TRUE) + if(oTarget == OBJECT_INVALID) { - DelayCommand(fDelay, CastBuffSpell(oPC, oTarget, nSpell, nClass, nMetamagic, nDomain, sList, sName)); + DelayCommand(fDelay, ai_SendMessages("Cannot quick cast " + sName + " because the " + sTargetName + " is not here!", AI_COLOR_RED, oPC)); } - else if(nSpellReady == -1) + else { - DelayCommand(fDelay, ai_SendMessages("Cannot quick cast " + sName + " because it is not ready to cast!", AI_COLOR_RED, oPC)); + if(nMetamagic > 0) + { + if(nMetamagic == METAMAGIC_EMPOWER) sName += " (Empowered)"; + else if(nMetamagic == METAMAGIC_EXTEND) sName += " (Extended)"; + else if(nMetamagic == METAMAGIC_MAXIMIZE) sName += " (Maximized)"; + else if(nMetamagic == METAMAGIC_QUICKEN) sName += " (Quickened)"; + else if(nMetamagic == METAMAGIC_SILENT) sName += " (Silent)"; + else if(nMetamagic == METAMAGIC_STILL) sName += " (Still)"; + } + nSpellReady = GetSpellReady(oCaster, nSpell, nClass, nLevel, nMetamagic, nDomain); + if(nSpellReady == TRUE) + { + DelayCommand(fDelay, CastBuffSpell(oPC, oCaster, oTarget, nSpell, nClass, nMetamagic, nDomain, sList, sName, bInstantSpell)); + } + else if(nSpellReady == -1) + { + DelayCommand(fDelay, ai_SendMessages(sCasterName + " cannot quick cast " + sName + " because it is not ready to cast!", AI_COLOR_RED, oPC)); + } + else if(nSpellReady == -2) + { + DelayCommand (fDelay, ai_SendMessages(sCasterName + " cannot quick cast " + sName + " because it is not memorized!", AI_COLOR_RED, oPC)); + } + else if(nSpellReady == -3) + { + DelayCommand (fDelay, ai_SendMessages(sCasterName + " cannot quick cast " + sName + " because there are no spell slots of that level left!", AI_COLOR_RED, oPC)); + } + else if(nSpellReady == -4) + { + DelayCommand (fDelay, ai_SendMessages(sCasterName + "cannot quick cast " + sName + " because that spell is not known.", AI_COLOR_RED, oPC)); + } + fDelay += fDelayIncrement; } - else if(nSpellReady == -2) - { - DelayCommand (fDelay, ai_SendMessages("Cannot quick cast " + sName + " because it is not memorized!", AI_COLOR_RED, oPC)); - } - else if(nSpellReady == -3) - { - DelayCommand (fDelay, ai_SendMessages("Cannot quick cast " + sName + " because there are no spell slots of that level left!", AI_COLOR_RED, oPC)); - } - else if(nSpellReady == -4) - { - DelayCommand (fDelay, ai_SendMessages("Cannot quick cast " + sName + " because that spell is not known.", AI_COLOR_RED, oPC)); - } - fDelay += 0.1f; } } else break; @@ -397,6 +427,7 @@ int GetSpellReady(object oCaster, int nSpell, int nClass, int nLevel, int nMetam if(StringToInt(Get2DAString("classes", "MemorizesSpells", nClass))) { int nSpellMemorized; + nMaxIndex = GetMemorizedSpellCountByLevel(oCaster, nClass, nLevel); while(nIndex < nMaxIndex) { nMSpell = GetMemorizedSpellId(oCaster, nClass, nLevel, nIndex); @@ -404,20 +435,18 @@ int GetSpellReady(object oCaster, int nSpell, int nClass, int nLevel, int nMetam { nMmSpell = GetMemorizedSpellMetaMagic(oCaster, nClass, nLevel, nIndex); nDSpell = GetMemorizedSpellIsDomainSpell(oCaster, nClass, nLevel, nIndex); - //ai_Debug("pe_buffing", "308", "nMmSpell: " + IntToString(nMmSpell) + + //SendMessageToPC(oCaster, "pe_buffing, 308, nSpell: " + IntToString(nSpell) + + // " nMSpell: " + IntToString(nMSpell) + + // " nMmSpell: " + IntToString(nMmSpell) + // " nMetamagic: " + IntToString(nMetamagic) + // " nDomain: " + IntToString(nDomain) + // " nDSpell: " + IntToString(nDSpell)); - // Cannot save the domain status so we just use the first spell ID. - // Then return the domain statusl. - //if(nMmSpell == nMetamagic && - // ((nDomain > 0 && nDSpell == TRUE) || nDomain == 0 && nDSpell == FALSE)) if(nMmSpell == nMetamagic) { nSpellMemorized = TRUE; if(GetMemorizedSpellReady(oCaster, nClass, nLevel, nIndex)) { - if(nDSpell == nDomain) return TRUE; + if((nDomain && nDSpell) || (!nDomain && !nDSpell)) return TRUE; } } } @@ -425,18 +454,20 @@ int GetSpellReady(object oCaster, int nSpell, int nClass, int nLevel, int nMetam { sSubRadSpell = "SubRadSpell" + IntToString(nSubRadSpell); if(nSpell == StringToInt(Get2DAString("spells", sSubRadSpell, nMSpell))) - nMmSpell = GetMemorizedSpellMetaMagic(oCaster, nClass, nLevel, nIndex); - nDSpell = GetMemorizedSpellIsDomainSpell(oCaster, nClass, nLevel, nIndex); - ai_Debug("pe_buffing", "421", "nMmSpell: " + IntToString(nMmSpell) + - " nMetamagic: " + IntToString(nMetamagic) + - " nDomain: " + IntToString(nDomain) + - " nDSpell: " + IntToString(nDSpell)); - if(nMmSpell == nMetamagic) { - nSpellMemorized = TRUE; - if(GetMemorizedSpellReady(oCaster, nClass, nLevel, nIndex)) + nMmSpell = GetMemorizedSpellMetaMagic(oCaster, nClass, nLevel, nIndex); + nDSpell = GetMemorizedSpellIsDomainSpell(oCaster, nClass, nLevel, nIndex); + //SendMessageToPC(oCaster, "pe_buffing, 433, nMmSpell: " + IntToString(nMmSpell) + + // " nMetamagic: " + IntToString(nMetamagic) + + // " nDomain: " + IntToString(nDomain) + + // " nDSpell: " + IntToString(nDSpell)); + if(nMmSpell == nMetamagic) { - if(nDSpell == nDomain) return TRUE; + nSpellMemorized = TRUE; + if(GetMemorizedSpellReady(oCaster, nClass, nLevel, nIndex)) + { + if((nDomain && nDSpell) || (!nDomain && !nDSpell)) return TRUE; + } } } } @@ -479,7 +510,6 @@ void PopupWidgetBuffGUIPanel(object oPC) SetLocalInt(oPC, AI_NO_NUI_SAVE, TRUE); DelayCommand(0.5f, DeleteLocalInt (oPC, AI_NO_NUI_SAVE)); // Row 1 (buttons)********************************************************** - json jRow = CreateButtonImage(JsonArray(), "ir_level1", "btn_one", 35.0f, 35.0f, 0.0); jRow = CreateButtonImage(jRow, "ir_level2", "btn_two", 35.0f, 35.0f, 0.0); jRow = CreateButtonImage(jRow, "ir_level3", "btn_three", 35.0f, 35.0f, 0.0); @@ -519,7 +549,6 @@ void PopupWidgetBuffGUIPanel(object oPC) if(bAIBuffWidgetLock) nToken = SetWindow (oPC, jLayout, "widgetbuffwin", "Fast Buff Widget", fX, fY, 160.0, 62.0, FALSE, FALSE, FALSE, TRUE, FALSE, "pe_buffing"); else nToken = SetWindow (oPC, jLayout, "widgetbuffwin", "Fast Buff Widget", fX, fY, 160.0, 95.0, FALSE, FALSE, FALSE, TRUE, TRUE, "pe_buffing"); // Set event watches for window inspector and save window location. - NuiSetBindWatch (oPC, nToken, "collapsed", TRUE); NuiSetBindWatch (oPC, nToken, "window_geometry", TRUE); // Set the buttons to show events. //NuiSetBind (oPC, nToken, "btn_one", JsonBool (TRUE)); diff --git a/_module/nss/pe_crafting.nss b/_module/nss/pe_crafting.nss index a1a8fac..51d76e7 100644 --- a/_module/nss/pe_crafting.nss +++ b/_module/nss/pe_crafting.nss @@ -8,6 +8,11 @@ #include "nw_inc_gff" #include "0i_main" #include "0i_items" +// Banned list of BaseItemTypes use rows from baseitemtype.2da. +// Place each one between a : . Example ":21:28:" will not change belts and clubs. +// Best used for visual effect items like helms. +const string CRAFT_BANNED_BASEITEMTYPES = ":23:"; +//const string CRAFT_BANNED_BASEITEMTYPES = "::"; // Maximum model number for all items except weapons. const int CRAFT_MAX_MODEL_NUMBER = 999; @@ -20,7 +25,8 @@ struct stWeaponAppearance }; // Maximum model number for weapons. Note this will be the 100s and 10s places. // The color number uses the ones place. Thus 25 is actually 250. -const int CRAFT_MAX_WEAPON_MODEL_NUMBER = 99; +const int ALLOW_CRAFT_NAMES = TRUE; +const int CRAFT_MAX_WEAPON_MODEL_NUMBER = 99; const string CRAFT_JSON = "CRAFT_JSON"; const string CRAFT_ORIGINAL_ITEM = "CRAFT_ORIGINAL_ITEM"; const string CRAFT_COOL_DOWN = "CRAFT_COOL_DOWN"; @@ -46,6 +52,7 @@ const string CRAFT_LEFT_PART_COLOR = "CRAFT_LEFT_PART_COLOR"; const string CRAFT_ALL_COLOR = "CRAFT_ALL_COLOR"; const string CRAFT_RIGHT_PART_COLOR = "CRAFT_RIGHT_PART_COLOR"; const string CRAFT_TARGET = "CRAFT_TARGET"; +const string CRAFT_ITEM = "CRAFT_ITEM"; // Tag used in lighting effects. const string CRAFT_HIGHLIGHT = "CRAFT_HIGHLIGHT"; const string CRAFT_ULTRALIGHT = "CRAFT_ULTRALIGHT"; @@ -95,6 +102,11 @@ void CreateItemGUIPanel(object oPC, object oTarget); void CraftItemInfoEvents(object oPC, int nToken); // Creates the save/load menu for items. //void CreateDresserGUIPanel(object oPC, object oTarget); +json CreateItemCombo(object oPC, json jRow, string sComboBind); +json CreateModelCombo(object oPC, object oTarget, json jRow, string sComboBind); +void CreateCreatureCraftingGUIPanel(object oPC, object oTarget); +// See above for constant that can have base item types added to the list. +int IfOnBannedBaseItemTypeList(object oPC, object oItem); int GetColorIDChange(object oItem, int nType, int nIndex, int nChange) { @@ -123,14 +135,63 @@ void main() // Targeting code here. if(sTargetMode == "SELECT_TARGET") { - if(GetAssociateType(oTarget) == ASSOCIATE_TYPE_HENCHMAN || - ai_GetIsCharacter(oTarget)) + int nObjectType = GetObjectType(oTarget); + if(nObjectType == OBJECT_TYPE_CREATURE) { - SetLocalObject(oPC, CRAFT_TARGET, oTarget); - AttachCamera(oPC, oTarget); - ExecuteScript("pi_crafting", oPC); + if(oPC == oTarget || GetMaster(oTarget) == oPC || + ai_GetIsDungeonMaster(oPC)) + { + SetLocalObject(oPC, CRAFT_TARGET, oTarget); + AttachCamera(oPC, oTarget); + SetLocalObject(oPC, CRAFT_TARGET, oTarget); + CreateCreatureCraftingGUIPanel(oPC, oTarget); + } + else + { + ai_SendMessages(GetName(oTarget) + " is not the player or a henchmen! Other associates cannot use item crafting.", AI_COLOR_RED, oPC); + // Set this variable on the player so PEPS can run the targeting script for this plugin. + SetLocalString(oPC, AI_PLUGIN_TARGET_SCRIPT, "pe_crafting"); + // Set Targeting variables. + SetLocalString(oPC, AI_TARGET_MODE, "SELECT_TARGET"); + ai_SendMessages("Select your character, a henchman or an item possessed by one.", AI_COLOR_YELLOW, oPC); + EnterTargetingMode(oPC, OBJECT_TYPE_CREATURE | OBJECT_TYPE_ITEM , + MOUSECURSOR_EXAMINE, MOUSECURSOR_NOEXAMINE); + return; + } + } + else if(nObjectType == OBJECT_TYPE_ITEM) + { + if(!GetIdentified(oTarget) && !ai_GetIsDungeonMaster(oPC)) + { + ai_SendMessages("The item must be Identified!", AI_COLOR_RED, oPC); + // Set this variable on the player so PEPS can run the targeting script for this plugin. + SetLocalString(oPC, AI_PLUGIN_TARGET_SCRIPT, "pe_crafting"); + // Set Targeting variables. + SetLocalString(oPC, AI_TARGET_MODE, "SELECT_TARGET"); + ai_SendMessages("Select your character, a henchman or an item possessed by one of them.", AI_COLOR_YELLOW, oPC); + EnterTargetingMode(oPC, OBJECT_TYPE_CREATURE | OBJECT_TYPE_ITEM , + MOUSECURSOR_EXAMINE, MOUSECURSOR_NOEXAMINE); + return; + } + object oCreature = GetItemPossessor(oTarget, TRUE); + if(oCreature == oPC || GetMaster(oCreature) == oPC || ai_GetIsDungeonMaster(oPC)) + { + SetLocalObject(oPC, "CRAFT_INFO_ITEM", oTarget); + CreateItemGUIPanel(oPC, oTarget); + } + else + { + ai_SendMessages("Items must be possessed by the player or a henchmen!", AI_COLOR_RED, oPC); + // Set this variable on the player so PEPS can run the targeting script for this plugin. + SetLocalString(oPC, AI_PLUGIN_TARGET_SCRIPT, "pe_crafting"); + // Set Targeting variables. + SetLocalString(oPC, AI_TARGET_MODE, "SELECT_TARGET"); + ai_SendMessages("Select your character, a henchman or an item possessed by one of them.", AI_COLOR_YELLOW, oPC); + EnterTargetingMode(oPC, OBJECT_TYPE_CREATURE | OBJECT_TYPE_ITEM , + MOUSECURSOR_EXAMINE, MOUSECURSOR_NOEXAMINE); + return; + } } - else ai_SendMessages(GetName(oTarget) + " is not the player or a henchmen! Other associates cannot use item crafting.", AI_COLOR_RED, oPC); } DeleteLocalString(oPC, AI_TARGET_MODE); } @@ -196,9 +257,9 @@ void main() return; } // Delay crafting so it has time to equip and unequip as well as remove. - //if(GetLocalInt(oPC, CRAFT_COOL_DOWN)) return; - //SetLocalInt(oPC, CRAFT_COOL_DOWN, TRUE); - //DelayCommand(0.25f, DeleteLocalInt(oPC, CRAFT_COOL_DOWN)); + if(GetLocalInt(oPC, CRAFT_COOL_DOWN)) return; + SetLocalInt(oPC, CRAFT_COOL_DOWN, TRUE); + DelayCommand(0.25f, DeleteLocalInt(oPC, CRAFT_COOL_DOWN)); // They have selected a color. if(sElem == "color_pallet") { @@ -319,7 +380,7 @@ void main() else jCraft = JsonObjectSet(jCraft, CRAFT_MODEL_SELECTION, JsonInt(0)); SetLocalJson(oPC, CRAFT_JSON, jCraft); NuiDestroy(oPC, nToken); - ExecuteScript("pi_crafting", oPC); + CreateCreatureCraftingGUIPanel(oPC, GetLocalObject(oPC, CRAFT_TARGET)); } // They have selected a part to change. else if(sElem == "model_combo_selected") @@ -414,7 +475,7 @@ void main() // Set Targeting variables. SetLocalString(oPC, AI_TARGET_MODE, "SELECT_TARGET"); NuiDestroy(oPC, nToken); - ai_SendMessages("Select either your charcter or a henchman to craft their equipment.", AI_COLOR_YELLOW, oPC); + ai_SendMessages("Select your charcter, a henchman or an item possessed by one.", AI_COLOR_YELLOW, oPC); DeleteLocalObject(oPC, CRAFT_ORIGINAL_ITEM); DeleteLocalObject(oPC, CRAFT_TARGET); DeleteLocalObject(oPC, "CRAFT_INFO_ITEM"); @@ -428,7 +489,8 @@ void main() RemoveTagedEffects(oTarget, CRAFT_HIGHLIGHT); DeleteLocalInt(oPC, CRAFT_HIGHLIGHT); } - EnterTargetingMode(oPC, OBJECT_TYPE_CREATURE , MOUSECURSOR_EXAMINE, MOUSECURSOR_NOEXAMINE); + EnterTargetingMode(oPC, OBJECT_TYPE_CREATURE | OBJECT_TYPE_ITEM , + MOUSECURSOR_EXAMINE, MOUSECURSOR_NOEXAMINE); } // Cancel any changes made to the selected item. else if(sElem == "btn_cancel") @@ -439,7 +501,7 @@ void main() CancelCraftedItem(oPC, oTarget); ClearItemInCraftingWindow(oPC, oItem, nToken); DelayCommand(0.5, NuiDestroy(oPC, nToken)); - DelayCommand(0.5, ExecuteScript("pi_crafting", oPC)); + DelayCommand(0.5, CreateCreatureCraftingGUIPanel(oPC, GetLocalObject(oPC, CRAFT_TARGET))); } // If the button is on Exit not Cancel then exit. else @@ -1183,6 +1245,8 @@ object ChangeItemsAppearance(object oPC, object oTarget, int nToken, object oIte // " nModelSelected: " + IntToString(nModelSelected)); } // Change the model. + //WriteTimestampedLogEntry("pe_crafting, 1241, " + GetName(oItem) + " nModelSelected: " + + // IntToString(nModelSelected) + " nModelNumber: " + IntToString(nModelNumber)); oNewItem = CopyItemAndModify (oItem, ITEM_APPR_TYPE_ARMOR_MODEL, nModelSelected, nModelNumber, TRUE); DestroyObject (oItem); AssignCommand (oTarget, ActionEquipItem (oNewItem, INVENTORY_SLOT_CHEST)); @@ -1215,6 +1279,8 @@ object ChangeItemsAppearance(object oPC, object oTarget, int nToken, object oIte // Note: Right Thigh and Left Thigh are backwards so this fixes that! if (nModelSelected == ITEM_APPR_ARMOR_MODEL_RTHIGH) nModelSelected--; else nModelSelected++; + //WriteTimestampedLogEntry("pe_crafting, 1275, " + GetName(oItem) + " nModelSelected: " + + // IntToString(nModelSelected) + " nModelNumber: " + IntToString(nModelNumber)); oItem = CopyItemAndModify(oNewItem, ITEM_APPR_TYPE_ARMOR_MODEL, nModelSelected, nModelNumber, TRUE); DestroyObject(oNewItem); AssignCommand(oTarget, ActionEquipItem(oItem, INVENTORY_SLOT_CHEST)); @@ -1433,17 +1499,18 @@ void CancelCraftedItem(object oPC, object oTarget) { json jCraft = GetLocalJson(oPC, CRAFT_JSON); int nItemSelected = JsonGetInt(JsonObjectGet(jCraft, CRAFT_ITEM_SELECTION)); - object oItem = GetSelectedItem(oTarget, nItemSelected); + object oItem = GetLocalObject(oPC, CRAFT_ITEM); object oOriginalItem = GetLocalObject(oPC, CRAFT_ORIGINAL_ITEM); if(oOriginalItem != OBJECT_INVALID) { - DestroyObject(oItem); int nSlot = GetItemSelectedEquipSlot(nItemSelected); // Give item Backup to Player oOriginalItem = CopyItem(oOriginalItem, oTarget, TRUE); DelayCommand(0.2f, AssignCommand (oTarget, ActionEquipItem(oOriginalItem, nSlot))); DeleteLocalObject(oPC, CRAFT_ORIGINAL_ITEM); } + DestroyObject(oItem); + DeleteLocalObject(oPC, CRAFT_ITEM); } // Gets the colorId from a image of the color pallet. // Thanks Zunath for the base code. @@ -1501,6 +1568,7 @@ void LockItemInCraftingWindow(object oPC, object oItem, object oTarget, int nTok // Make sure the item information window is closed. nToken = NuiFindWindow(oPC, "craft_item_nui"); if(nToken) NuiDestroy(oPC, nToken); + SetLocalObject(oPC, CRAFT_ITEM, oItem); } void ClearItemInCraftingWindow(object oPC, object oItem, int nToken) { @@ -1529,6 +1597,7 @@ void SaveCraftedItem(object oPC, object oTarget, int nToken) } int CanCraftItem(object oPC, object oItem, int nToken, int bPasteCheck = FALSE) { + if(IfOnBannedBaseItemTypeList(oPC, oItem)) return FALSE; // Plot items cannot be changed. if(GetPlotFlag(oItem)) { @@ -1892,55 +1961,75 @@ void CreateItemGUIPanel(object oPC, object oItem) jRow = CreateTextEditBox (jRow, "name_placeholder", "txt_item_name", 60, FALSE, 325.0f, 20.0f); // Add row to the column. json jCol = JsonArrayInsert(JsonArray(), NuiRow(jRow)); - // Row 2 (Tag)************************************************************** 101 - jRow = CreateLabel(JsonArray(), "Tag:", "lbl_tag_title", 50.0f, 20.0f, NUI_HALIGN_LEFT); - jRow = CreateTextEditBox(jRow, "name_placeholder", "txt_item_tag", 60, FALSE, 325.0f, 20.0f); - jCol = JsonArrayInsert(jCol, NuiRow(jRow)); - // Row 2 (ResRef)*********************************************************** 129 - jRow = CreateLabel(JsonArray(), "ResRef:", "lbl_resref_title", 50.0f, 20.0f, NUI_HALIGN_LEFT); - jRow = CreateTextEditBox(jRow, "name_placeholder", "txt_item_resref", 60, FALSE, 325.0f, 20.0f); - // Add row to the column. - jCol = JsonArrayInsert(jCol, NuiRow(jRow)); + float fHeight = 113.0; + if(!ai_GetIsServer() || ai_GetIsDungeonMaster(oPC)) + { + // Row 2 (Tag)************************************************************** 101 + jRow = CreateLabel(JsonArray(), "Tag:", "lbl_tag_title", 50.0f, 20.0f, NUI_HALIGN_LEFT); + jRow = CreateTextEditBox(jRow, "name_placeholder", "txt_item_tag", 60, FALSE, 325.0f, 20.0f); + jCol = JsonArrayInsert(jCol, NuiRow(jRow)); + // Row 2 (ResRef)*********************************************************** 129 + jRow = CreateLabel(JsonArray(), "ResRef:", "lbl_resref_title", 50.0f, 20.0f, NUI_HALIGN_LEFT); + jRow = CreateTextEditBox(jRow, "name_placeholder", "txt_item_resref", 60, FALSE, 325.0f, 20.0f); + // Add row to the column. + jCol = JsonArrayInsert(jCol, NuiRow(jRow)); + fHeight += 56.0; + } // Row 3 (Base Item/Weight)************************************************* 157 - jRow = CreateLabel(JsonArray(), "Base Item: ", "lbl_baseitem_title", 75.0f, 20.0f, NUI_HALIGN_LEFT); - jRow = CreateLabel(jRow, "", "lbl_baseitem", 145.0f, 20.0f, NUI_HALIGN_LEFT); - jRow = CreateLabel(jRow, "Weight: ", "lbl_weight_title", 55.0f, 20.0f, NUI_HALIGN_LEFT); - jRow = CreateLabel(jRow, "", "lbl_weight", 65.0f, 20.0f, NUI_HALIGN_LEFT); - // Add row to the column. - jCol = JsonArrayInsert(jCol, NuiRow(jRow)); - // Row 4 (Gold Value)******************************************************* 185 - jRow = CreateLabel(JsonArray(), "Gold Value: ", "lbl_gold_title", 85.0f, 20.0f, NUI_HALIGN_LEFT); - jRow = CreateLabel(jRow, "", "lbl_gold_value", 135.0f, 20.0f, NUI_HALIGN_LEFT); - jRow = CreateLabel(jRow, "Minimum Level: ", "lbl_min_lvl_title", 110.0f, 20.0f, NUI_HALIGN_LEFT); - jRow = CreateLabel(jRow, "", "lbl_min_lvl", 20.0f, 20.0f, NUI_HALIGN_LEFT); - // Add row to the column. - jCol = JsonArrayInsert(jCol, NuiRow(jRow)); - // Row 5 (Plot/Stolen)****************************************************** 213 - jRow = CreateCheckBox(JsonArray(), " Plot", "chbx_plot", 110.0, 20.0f, "chbx_plot_tooltip"); - jRow = CreateCheckBox(jRow, " Stolen", "chbx_stolen", 110.0, 20.0f, "chbx_stolen_tooltip"); - jRow = CreateCheckBox(jRow, " Cursed", "chbx_cursed", 110.0, 20.0f, "chbx_cursed_tooltip"); - // Add row to the column. - jCol = JsonArrayInsert(jCol, NuiRow(jRow)); - // Row 6 (Identified/Droppable)********************************************* 269 - jRow = CreateCheckBox(JsonArray(), " Identified", "chbx_identified", 110.0, 25.0f, "chbx_identified_tooltip"); - jRow = CreateCheckBox(jRow, " Droppable", "chbx_droppable", 110.0, 25.0f, "chbx_droppable_tooltip"); - jRow = CreateButton(jRow, "Save as UTI", "btn_save_uti", 110.0, 25.0, -1.0, "btn_save_uti_tooltip"); - // Add row to the column. - jCol = JsonArrayInsert(jCol, NuiRow(jRow)); - // Row 9 (Stack/Variables/Destroy/Charges)********************************** 307 - jRow = CreateTextEditBox(JsonArray(), "name_placeholder", "txt_stack", 4, FALSE, 35.0f, 25.0f); - jRow = CreateLabel(jRow, " Stack", "lbl_stack_title", 72.0f, 20.0f, NUI_HALIGN_LEFT); - jRow = CreateTextEditBox(jRow, "name_placeholder", "txt_charges", 4, FALSE, 40.0f, 25.0f); - jRow = CreateLabel(jRow, " Charges", "lbl_charges_title", 68.0f, 25.0f, NUI_HALIGN_LEFT); - jRow = CreateButtonSelect(jRow, "Destroy", "btn_destroy", 110.0, 25.0, "btn_destroy_tooltip"); + jRow = CreateLabel(JsonArray(), "Base Item: ", "lbl_baseitem_title", 67.0f, 20.0f, NUI_HALIGN_LEFT); + jRow = CreateLabel(jRow, "", "lbl_baseitem", 120.0f, 20.0f, NUI_HALIGN_LEFT); + jRow = CreateLabel(jRow, "Weight: ", "lbl_weight_title", 48.0f, 20.0f, NUI_HALIGN_LEFT); + jRow = CreateLabel(jRow, "", "lbl_weight", 30.0f, 20.0f, NUI_HALIGN_LEFT); + jRow = CreateButton(jRow, "Select Target", "btn_select_target", 100.0f, 20.0f); // Add row to the column. jCol = JsonArrayInsert(jCol, NuiRow(jRow)); + fHeight += 28.0; + if(!ai_GetIsServer() || ai_GetIsDungeonMaster(oPC)) + { + // Row 4 (Gold Value)******************************************************* 185 + jRow = CreateLabel(JsonArray(), "Gold Value: ", "lbl_gold_title", 85.0f, 25.0f, NUI_HALIGN_LEFT); + jRow = CreateLabel(jRow, "", "lbl_gold_value", 135.0f, 25.0f, NUI_HALIGN_LEFT); + jRow = CreateLabel(jRow, "Minimum Level: ", "lbl_min_lvl_title", 110.0f, 25.0f, NUI_HALIGN_LEFT); + jRow = CreateLabel(jRow, "", "lbl_min_lvl", 20.0f, 25.0f, NUI_HALIGN_LEFT); + // Add row to the column. + jCol = JsonArrayInsert(jCol, NuiRow(jRow)); + // Row 5 (Plot/Stolen)****************************************************** 213 + jRow = CreateCheckBox(JsonArray(), " Plot", "chbx_plot", 110.0, 25.0f, "chbx_plot_tooltip"); + jRow = CreateCheckBox(jRow, " Stolen", "chbx_stolen", 110.0, 25.0f, "chbx_stolen_tooltip"); + jRow = CreateCheckBox(jRow, " Cursed", "chbx_cursed", 110.0, 25.0f, "chbx_cursed_tooltip"); + // Add row to the column. + jCol = JsonArrayInsert(jCol, NuiRow(jRow)); + // Row 6 (Identified/Droppable)********************************************* 269 + jRow = CreateCheckBox(JsonArray(), " Identified", "chbx_identified", 110.0, 25.0f, "chbx_identified_tooltip"); + jRow = CreateCheckBox(jRow, " Droppable", "chbx_droppable", 110.0, 25.0f, "chbx_droppable_tooltip"); + jRow = CreateButton(jRow, "Save as UTI", "btn_save_uti", 110.0, 25.0, -1.0, "btn_save_uti_tooltip"); + // Add row to the column. + jCol = JsonArrayInsert(jCol, NuiRow(jRow)); + // Row 9 (Stack/Variables/Destroy/Charges)********************************** 307 + jRow = CreateTextEditBox(JsonArray(), "name_placeholder", "txt_stack", 4, FALSE, 35.0f, 25.0f); + jRow = CreateLabel(jRow, " Stack", "lbl_stack_title", 72.0f, 20.0f, NUI_HALIGN_LEFT); + jRow = CreateTextEditBox(jRow, "name_placeholder", "txt_charges", 4, FALSE, 40.0f, 25.0f); + jRow = CreateLabel(jRow, " Charges", "lbl_charges_title", 68.0f, 25.0f, NUI_HALIGN_LEFT); + jRow = CreateButtonSelect(jRow, "Destroy", "btn_destroy", 110.0, 25.0, "btn_destroy_tooltip"); + // Add row to the column. + jCol = JsonArrayInsert(jCol, NuiRow(jRow)); + fHeight += 132.0; + } // Row 11 (Description)***************************************************** 558 jRow = CreateTextEditBox(JsonArray(), "desc_placeholder", "txt_desc", 1000, TRUE, 375.0, 243.0, "txt_desc_tooltip"); // Add row to the column. jCol = JsonArrayInsert(jCol, NuiRow(jRow)); - float fHeight = 566.0; - // Row 12 (Item Base Description)* ***************************************** 158 + fHeight += 251.0; + if(!ai_GetIsServer() || ai_GetIsDungeonMaster(oPC) || ALLOW_CRAFT_NAMES) + { + // Row 12 (Description Save Button)***************************************** 558 + jRow = JsonArrayInsert(JsonArray(), NuiSpacer()); + jRow = CreateButton(jRow, "Save Description", "btn_save_desc", 150.0f, 20.0f); + jRow = JsonArrayInsert(jRow, NuiSpacer()); + // Add row to the column. + jCol = JsonArrayInsert(jCol, NuiRow(jRow)); + } fHeight += 28.0; + // Row 13 (Item Base Description)* ***************************************** 158 int nBaseItemType = GetBaseItemType(oItem); float fWeight; string sBaseItemDesc; @@ -1970,65 +2059,80 @@ void CreateItemGUIPanel(object oPC, object oItem) int nToken = SetWindow (oPC, jLayout, "craft_item_nui", sName + "'s item menu", -1.0, -1.0, 400.0, fHeight, FALSE, FALSE, TRUE, FALSE, TRUE, "pe_crafting"); // Set the buttons to show events to 0e_window. - NuiSetBind(oPC, nToken, "txt_item_name_event", JsonBool(TRUE)); NuiSetBind(oPC, nToken, "txt_item_name", JsonString(GetName(oItem))); - NuiSetBindWatch(oPC, nToken, "txt_item_name", TRUE); - NuiSetBind(oPC, nToken, "txt_item_tag_event", JsonBool(TRUE)); - NuiSetBind(oPC, nToken, "txt_item_tag", JsonString(GetTag(oItem))); - NuiSetBindWatch(oPC, nToken, "txt_item_tag", TRUE); - NuiSetBind(oPC, nToken, "txt_item_resref_event", JsonBool(TRUE)); - NuiSetBind(oPC, nToken, "txt_item_resref", JsonString(GetResRef(oItem))); - NuiSetBindWatch(oPC, nToken, "txt_item_resref", TRUE); + if(!ai_GetIsServer() || ai_GetIsDungeonMaster(oPC) || ALLOW_CRAFT_NAMES) + { + NuiSetBind(oPC, nToken, "txt_item_name_event", JsonBool(TRUE)); + NuiSetBindWatch(oPC, nToken, "txt_item_name", TRUE); + } + if(!ai_GetIsServer() || ai_GetIsDungeonMaster(oPC)) + { + NuiSetBind(oPC, nToken, "txt_item_tag_event", JsonBool(TRUE)); + NuiSetBind(oPC, nToken, "txt_item_tag", JsonString(GetTag(oItem))); + NuiSetBindWatch(oPC, nToken, "txt_item_tag", TRUE); + NuiSetBind(oPC, nToken, "txt_item_resref_event", JsonBool(TRUE)); + NuiSetBind(oPC, nToken, "txt_item_resref", JsonString(GetResRef(oItem))); + NuiSetBindWatch(oPC, nToken, "txt_item_resref", TRUE); + } string sValue = GetStringByStrRef(StringToInt(Get2DAString("baseitems", "Name", nBaseItemType))); NuiSetBind(oPC, nToken, "lbl_baseitem_label", JsonString(sValue)); sValue = FloatToString(fWeight * 0.1f, 0, 1); NuiSetBind(oPC, nToken, "lbl_weight_label", JsonString(sValue)); - int nValue = GetGoldPieceValue(oItem); - NuiSetBind (oPC, nToken, "lbl_gold_value_label", JsonString(IntToString(nValue))); - sValue = IntToString (ai_GetMinimumEquipLevel(oItem)); - NuiSetBind(oPC, nToken, "lbl_min_lvl_label", JsonString (sValue)); - nValue = GetPlotFlag (oItem); - NuiSetBind(oPC, nToken, "chbx_plot_event", JsonBool(TRUE)); - NuiSetBind(oPC, nToken, "chbx_plot_check", JsonBool(nValue)); - NuiSetBindWatch(oPC, nToken, "chbx_plot_check", TRUE); - NuiSetBind(oPC, nToken, "chbx_plot_tooltip", JsonString (" Plot items cannot be sold or destroyed.")); - nValue = GetStolenFlag(oItem); - NuiSetBind(oPC, nToken, "chbx_stolen_event", JsonBool(TRUE)); - NuiSetBind(oPC, nToken, "chbx_stolen_check", JsonBool(nValue)); - NuiSetBindWatch (oPC, nToken, "chbx_stolen_check", TRUE); - NuiSetBind(oPC, nToken, "chbx_stolen_tooltip", JsonString (" Stolen items cannot be sold to some stores.")); - nValue = GetItemCursedFlag(oItem); - NuiSetBind(oPC, nToken, "chbx_cursed_event", JsonBool(TRUE)); - NuiSetBind(oPC, nToken, "chbx_cursed_check", JsonBool(nValue)); - NuiSetBindWatch (oPC, nToken, "chbx_cursed_check", TRUE); - NuiSetBind(oPC, nToken, "chbx_cursed_tooltip", JsonString (" Cursed items cannot be dropped or sold.")); - nValue = GetIdentified (oItem); - NuiSetBind(oPC, nToken, "chbx_identified_event", JsonBool(TRUE)); - NuiSetBind(oPC, nToken, "chbx_identified_check", JsonBool(nValue)); - NuiSetBindWatch(oPC, nToken, "chbx_identified_check", TRUE); - NuiSetBind(oPC, nToken, "chbx_identified_tooltip", JsonString (" Close inventory and open again to refresh identified state.")); - nValue = GetDroppableFlag(oItem); - NuiSetBind(oPC, nToken, "chbx_droppable_event", JsonBool(TRUE)); - NuiSetBind(oPC, nToken, "chbx_droppable_check", JsonBool(nValue)); - NuiSetBindWatch(oPC, nToken, "chbx_droppable_check", TRUE); - NuiSetBind(oPC, nToken, "chbx_droppable_tooltip", JsonString (" Droppable items only work on death of an NPC.")); - NuiSetBind(oPC, nToken, "btn_save_uti_event", JsonBool(TRUE)); - NuiSetBind(oPC, nToken, "btn_save_uti_tooltip", JsonString (" Saves item to a UTI file. Update will be used in the game.")); - nValue = GetItemStackSize (oItem); - NuiSetBind(oPC, nToken, "txt_stack_event", JsonBool(TRUE)); - NuiSetBind (oPC, nToken, "txt_stack", JsonString(IntToString (nValue))); - NuiSetBindWatch (oPC, nToken, "txt_stack", TRUE); - nValue = GetItemCharges (oItem); - NuiSetBind(oPC, nToken, "txt_charges_event", JsonBool(TRUE)); - NuiSetBind (oPC, nToken, "txt_charges", JsonString(IntToString (nValue))); - NuiSetBindWatch (oPC, nToken, "txt_charges", TRUE); - NuiSetBind(oPC, nToken, "btn_destroy_event", JsonBool(TRUE)); - NuiSetBind(oPC, nToken, "btn_destroy_tooltip", JsonString(" Destroys the item permanently! Must click twice to destroy the item.")); + NuiSetBind(oPC, nToken, "btn_select_target_event", JsonBool(TRUE)); + NuiSetBind(oPC, nToken, "btn_select_target_tooltip", JsonString(" Select another Item")); + if(!ai_GetIsServer() || ai_GetIsDungeonMaster(oPC)) + { + int nValue = GetGoldPieceValue(oItem); + NuiSetBind (oPC, nToken, "lbl_gold_value_label", JsonString(IntToString(nValue))); + sValue = IntToString (ai_GetMinimumEquipLevel(oItem)); + NuiSetBind(oPC, nToken, "lbl_min_lvl_label", JsonString (sValue)); + nValue = GetPlotFlag (oItem); + NuiSetBind(oPC, nToken, "chbx_plot_event", JsonBool(TRUE)); + NuiSetBind(oPC, nToken, "chbx_plot_check", JsonBool(nValue)); + NuiSetBindWatch(oPC, nToken, "chbx_plot_check", TRUE); + NuiSetBind(oPC, nToken, "chbx_plot_tooltip", JsonString (" Plot items cannot be sold or destroyed.")); + nValue = GetStolenFlag(oItem); + NuiSetBind(oPC, nToken, "chbx_stolen_event", JsonBool(TRUE)); + NuiSetBind(oPC, nToken, "chbx_stolen_check", JsonBool(nValue)); + NuiSetBindWatch (oPC, nToken, "chbx_stolen_check", TRUE); + NuiSetBind(oPC, nToken, "chbx_stolen_tooltip", JsonString (" Stolen items cannot be sold to some stores.")); + nValue = GetItemCursedFlag(oItem); + NuiSetBind(oPC, nToken, "chbx_cursed_event", JsonBool(TRUE)); + NuiSetBind(oPC, nToken, "chbx_cursed_check", JsonBool(nValue)); + NuiSetBindWatch (oPC, nToken, "chbx_cursed_check", TRUE); + NuiSetBind(oPC, nToken, "chbx_cursed_tooltip", JsonString (" Cursed items cannot be dropped or sold.")); + nValue = GetIdentified (oItem); + NuiSetBind(oPC, nToken, "chbx_identified_event", JsonBool(TRUE)); + NuiSetBind(oPC, nToken, "chbx_identified_check", JsonBool(nValue)); + NuiSetBindWatch(oPC, nToken, "chbx_identified_check", TRUE); + NuiSetBind(oPC, nToken, "chbx_identified_tooltip", JsonString (" Close inventory and open again to refresh identified state.")); + nValue = GetDroppableFlag(oItem); + NuiSetBind(oPC, nToken, "chbx_droppable_event", JsonBool(TRUE)); + NuiSetBind(oPC, nToken, "chbx_droppable_check", JsonBool(nValue)); + NuiSetBindWatch(oPC, nToken, "chbx_droppable_check", TRUE); + NuiSetBind(oPC, nToken, "chbx_droppable_tooltip", JsonString (" Droppable items only work on death of an NPC.")); + NuiSetBind(oPC, nToken, "btn_save_uti_event", JsonBool(TRUE)); + NuiSetBind(oPC, nToken, "btn_save_uti_tooltip", JsonString (" Saves item to a UTI file. Update will be used in the game.")); + nValue = GetItemStackSize (oItem); + NuiSetBind(oPC, nToken, "txt_stack_event", JsonBool(TRUE)); + NuiSetBind (oPC, nToken, "txt_stack", JsonString(IntToString (nValue))); + NuiSetBindWatch (oPC, nToken, "txt_stack", TRUE); + nValue = GetItemCharges (oItem); + NuiSetBind(oPC, nToken, "txt_charges_event", JsonBool(TRUE)); + NuiSetBind (oPC, nToken, "txt_charges", JsonString(IntToString (nValue))); + NuiSetBindWatch (oPC, nToken, "txt_charges", TRUE); + NuiSetBind(oPC, nToken, "btn_destroy_event", JsonBool(TRUE)); + NuiSetBind(oPC, nToken, "btn_destroy_tooltip", JsonString(" Destroys the item permanently! Must click twice to destroy the item.")); + } // Description - NuiSetBind(oPC, nToken, "txt_desc_event", JsonBool(TRUE)); - NuiSetBindWatch(oPC, nToken, "txt_desc", TRUE); - NuiSetBind(oPC, nToken, "txt_desc_tooltip", JsonString (" Color codes can be used!")); NuiSetBind(oPC, nToken, "txt_desc", JsonString(GetDescription(oItem))); + if(!ai_GetIsServer() || ai_GetIsDungeonMaster(oPC) || ALLOW_CRAFT_NAMES) + { + NuiSetBind(oPC, nToken, "txt_desc_event", JsonBool(TRUE)); + NuiSetBindWatch(oPC, nToken, "txt_desc", TRUE); + NuiSetBind(oPC, nToken, "txt_desc_tooltip", JsonString (" Color codes can be used!")); + NuiSetBind(oPC, nToken, "btn_save_desc_event", JsonBool(TRUE)); + } // Base Item Description NuiSetBind(oPC, nToken, "txt_base_desc_event", JsonBool(TRUE)); //NuiSetBind(oPC, nToken, "txt_desc_tooltip", JsonString ("Color codes can be used!")); @@ -2050,6 +2154,17 @@ void CraftItemInfoEvents(object oPC, int nToken) object oItem = GetLocalObject(oPC, "CRAFT_INFO_ITEM"); if(sEvent == "click") { + if(sElem == "btn_select_target") + { + // Set this variable on the player so PEPS can run the targeting script for this plugin. + SetLocalString(oPC, AI_PLUGIN_TARGET_SCRIPT, "pe_crafting"); + // Set Targeting variables. + SetLocalString(oPC, AI_TARGET_MODE, "SELECT_TARGET"); + NuiDestroy(oPC, nToken); + ai_SendMessages("Select your charcter, a henchman or an item possessed by one.", AI_COLOR_YELLOW, oPC); + EnterTargetingMode(oPC, OBJECT_TYPE_CREATURE | OBJECT_TYPE_ITEM , + MOUSECURSOR_EXAMINE, MOUSECURSOR_NOEXAMINE); + } if(sElem == "btn_destroy") { if(!JsonGetInt(NuiGetBind(oPC, nToken, "btn_destroy"))) @@ -2084,6 +2199,11 @@ void CraftItemInfoEvents(object oPC, int nToken) ai_SendMessages("This temp directory will be removed when the game is left.", AI_COLOR_GREEN, oPC); } } + if(sElem == "btn_save_desc") + { + string sDescription = JsonGetString(NuiGetBind(oPC, nToken, "txt_desc")); + SetDescription(oItem, sDescription); + } } if(sEvent == "watch") { @@ -2151,5 +2271,614 @@ void CraftItemInfoEvents(object oPC, int nToken) } /*void CreateDresserGUIPanel(object oPC, object oTarget) { +} */ +json CreateItemCombo(object oPC, json jRow, string sComboBind) +{ + int nCnt; + // Create the list. + json jCombo = JsonArrayInsert(JsonArray(), NuiComboEntry("Armor", 0)); + jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Cloak", 1)); + jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Headgear", 2)); + jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Right hand", 3)); + jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Left hand", 4)); + return CreateCombo(jRow, jCombo, sComboBind, 128.0, 40.0); +} +json CreateModelCombo(object oPC, object oTarget, json jRow, string sComboBind) +{ + float fFacing = GetFacing(oTarget); + json jCombo, jCraft = GetLocalJson(oPC, CRAFT_JSON); + int nSelected = JsonGetInt(JsonObjectGet(jCraft, CRAFT_ITEM_SELECTION)); + // Create the list. + // Armor. + if(nSelected == 0) + { + fFacing += 180.0f; + if (fFacing > 359.0) fFacing -=359.0; + AssignCommand(oPC, SetCameraFacing(fFacing, 4.5f, 75.0, CAMERA_TRANSITION_TYPE_VERY_FAST)); + jCombo = JsonArrayInsert(JsonArray(), NuiComboEntry("Neck", 0)); + jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Shoulder", 1)); + jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Bicep", 2)); + jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Forearm", 3)); + jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Hand", 4)); + jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Torso", 5)); + jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Belt", 6)); + jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Pelvis", 7)); + jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Thigh", 8)); + jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Shin", 9)); + jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Foot", 10)); + jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Robe", 11)); + } + // Cloak. + else if(nSelected == 1) + { + if(fFacing > 359.0) fFacing -=359.0; + AssignCommand (oPC, SetCameraFacing(fFacing, 4.5f, 75.0, CAMERA_TRANSITION_TYPE_VERY_FAST)); + jCombo = JsonArrayInsert(JsonArray(), NuiComboEntry("Cloak", 0)); + jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Invisible", 1)); + } + // Headgear. + else if (nSelected == 2) + { + fFacing += 180.0f; + if(fFacing > 359.0) fFacing -=359.0; + AssignCommand(oPC, SetCameraFacing(fFacing, 2.5f, 75.0, CAMERA_TRANSITION_TYPE_VERY_FAST)); + jCombo = JsonArrayInsert(JsonArray(), NuiComboEntry("Headgear", 0)); + jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Invisible", 1)); + } + // Weapon. + else if (nSelected == 3) + { + // If they are changing a bow then face the opposite side. + object oItem = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC); + int nBaseItemType = GetBaseItemType(oItem); + if(nBaseItemType == BASE_ITEM_LONGBOW || nBaseItemType == BASE_ITEM_SHORTBOW) fFacing -= 90.00; + // This will make the camera face a melee weapon. + else fFacing += 90.0; + if(fFacing > 359.0) fFacing -=359.0; + AssignCommand(oPC, SetCameraFacing(fFacing, 3.5f, 75.0, CAMERA_TRANSITION_TYPE_VERY_FAST)); + jCombo = JsonArrayInsert(JsonArray(), NuiComboEntry("Weapon", 0)); + jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Acidic", 1)); + jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Frost", 2)); + jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Electric", 3)); + jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Unholy", 4)); + jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Flaming", 5)); + jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Holy", 6)); + jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Sonic", 7)); +} + // Weapon/Shield. + else if(nSelected == 4) + { + fFacing += 270.0f; + if(fFacing > 359.0) fFacing -=359.0; + AssignCommand(oPC, SetCameraFacing(fFacing, 3.5f, 75.0, CAMERA_TRANSITION_TYPE_VERY_FAST)); + object oItem = GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC); + if(ai_GetIsShield(oItem)) + { + jCombo = JsonArrayInsert(JsonArray(), NuiComboEntry("Shield", 0)); + jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Invisible", 1)); + } + else + { + jCombo = JsonArrayInsert(JsonArray(), NuiComboEntry("Weapon", 0)); + jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Acidic", 1)); + jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Frost", 2)); + jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Electric", 3)); + jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Unholy", 4)); + jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Flaming", 5)); + jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Holy", 6)); + jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Sonic", 7)); + } + } + return CreateCombo(jRow, jCombo, sComboBind, 128.0, 40.0); +} +void CreateCreatureCraftingGUIPanel(object oPC, object oTarget) +{ + json jCraft = GetLocalJson(oPC, CRAFT_JSON); + if(JsonGetType(jCraft) == JSON_TYPE_NULL) jCraft = JsonObject(); + // Row 1 (Object Name)****************************************************** 508 / 83 + json jRow = CreateTextEditBox(JsonArray(), "plc_hold_bind", "txt_item_name", 50, FALSE, 486.0f, 30.0f); // 419 + json jCol = JsonArrayInsert(JsonArray(), NuiRow(jRow)); + // Row 2 (Object Name)****************************************************** 508 / 121 + jRow = JsonArray(); + jRow = CreateButton(jRow, "Information", "btn_info", 160.0f, 30.0f, -1.0, "btn_info_tooltip"); + jRow = CreateButton(jRow, "Wardrobe", "btn_wardrobe", 158.0f, 30.0f, -1.0, "btn_wardrobe_tooltip"); + jRow = CreateButtonSelect(jRow, "Add Light", "btn_highlight", 160.0f, 30.0f, "btn_highlight_tooltip"); + jCol = JsonArrayInsert(jCol, NuiRow(jRow)); + // Row 3 (Object Name)****************************************************** 508 / 159 + jRow = CreateButton(JsonArray(), "Save", "btn_save", 160.0f, 30.0f, -1.0, "btn_save_tooltip"); + jRow = CreateButton(jRow, "Select Target", "btn_select_target", 158.0f, 30.0f, -1.0, "btn_select_target_tooltip"); + jRow = CreateButton(jRow, "", "btn_cancel", 160.0f, 30.0f, -1.0, "btn_cancel_tooltip"); + jCol = JsonArrayInsert(jCol, NuiRow(jRow)); + // Row 4 (labels)*********************************************************** 508 / 177 + jRow = CreateLabel(JsonArray(), "Model", "module_title", 143.0f, 10.0f); + jRow = CreateLabel(jRow, "Color", "color_title", 339.0f, 10.0f); + jRow = JsonArrayInsert(jCol, NuiRow(jRow)); + // Row 5 (groups) + // Row 51 (title)*********************************************************** 508 / 195 / 18 + json jGroupRow = CreateLabel(JsonArray(), "Item", "item__cmb_title", 128.0f, 10.0f); + json jGroupCol = JsonArrayInsert(JsonArray(), NuiRow(jGroupRow)); + // Row 52 (combo)*********************************************************** 508 / 233 / 56 + jGroupRow = CreateItemCombo(oPC, JsonArray(), "item_combo"); + jGroupCol = JsonArrayInsert(jGroupCol, NuiRow(jGroupRow)); + // Row 53 (title)*********************************************************** 508 / 251 / 74 + jGroupRow = CreateLabel(JsonArray(), "Model", "model_cmb_title",128.0f, 10.0f); + jGroupCol = JsonArrayInsert(jGroupCol, NuiRow(jGroupRow)); + // Row 54 (combo)*********************************************************** 508 / 289 / 112 + jGroupRow = CreateModelCombo(oPC, oTarget, JsonArray(), "model_combo"); + jGroupCol = JsonArrayInsert(jGroupCol, NuiRow(jGroupRow)); + // Row 55 (title)*********************************************************** 508 / 307 / 120 + jGroupRow = CreateLabel(JsonArray(), "", "top_title",128.0f, 10.0f); + jGroupCol = JsonArrayInsert(jGroupCol, NuiRow(jGroupRow)); + // Row 56 (top)************************************************************* 508 / 355 / 168 + jGroupRow = CreateButtonImage(JsonArray(), "nui_shld_left", "btn_prev_t", 40.0f, 40.0f); + // Removed TextEditBox for mobile + jGroupRow = CreateTextEditBox(jGroupRow, "place_holder", "txt_model_number_t", 3, FALSE, 40.0, 40.0); + //CreateLabel(jGroupRow, "", "txt_model_number_t", 40.0, 40.0); + jGroupRow = CreateButtonImage(jGroupRow, "nui_shld_right", "btn_next_t", 40.0f, 40.0f); + jGroupCol = JsonArrayInsert(jGroupCol, NuiRow(jGroupRow)); + // Row 57 (title)*********************************************************** 508 / 373 / 186 + jGroupRow = CreateLabel(JsonArray(), "", "middle_title",128.0f, 10.0f); + jGroupCol = JsonArrayInsert(jGroupCol, NuiRow(jGroupRow)); + // Row 58 (middle)********************************************************** 508 / 421 /234 + jGroupRow = CreateButtonImage(JsonArray(), "nui_shld_left", "btn_prev_m", 40.0f, 40.0f); + // Removed TextEditBox for mobile + jGroupRow = CreateTextEditBox(jGroupRow, "place_holder", "txt_model_number_m", 3, FALSE, 40.0, 40.0); + //CreateLabel(jGroupRow, "", "txt_model_number_m", 40.0, 40.0); + jGroupRow = CreateButtonImage(jGroupRow, "nui_shld_right", "btn_next_m", 40.0f, 40.0f); + jGroupCol = JsonArrayInsert(jGroupCol, NuiRow(jGroupRow)); + // Row 59 (title)*********************************************************** 508 / 439 / 252 + jGroupRow = CreateLabel(JsonArray(), "", "bottom_title",128.0f, 10.0f); + jGroupCol = JsonArrayInsert(jGroupCol, NuiRow(jGroupRow)); + // Row 510 (bottom)********************************************************* 508 / 487 /300 + jGroupRow = CreateButtonImage(JsonArray(), "nui_shld_left", "btn_prev_b", 40.0f, 40.0f); + // Removed TextEditBox for mobile + jGroupRow = CreateTextEditBox(jGroupRow, "place_holder", "txt_model_number_b", 3, FALSE, 40.0, 40.0); + //CreateLabel(jGroupRow, "", "txt_model_number_b", 40.0, 40.0); + jGroupRow = CreateButtonImage(jGroupRow, "nui_shld_right", "btn_next_b", 40.0f, 40.0f); + jGroupCol = JsonArrayInsert(jGroupCol, NuiRow(jGroupRow)); + // Row 511 (blank spacer) + jGroupRow = CreateLabel(JsonArray(), "", "blank_space",128.0f, 20.0f); + jGroupCol = JsonArrayInsert(jGroupCol, NuiRow(jGroupRow)); + // Row 512 (light)********************************************************** 508 / 487 /300 + jGroupRow = CreateButtonSelect(JsonArray(), "Randomize", "btn_randomize", 128.0f, 30.0f); + jGroupCol = JsonArrayInsert(jGroupCol, NuiRow(jGroupRow)); + jGroupCol = JsonArrayInsert(jGroupCol, NuiSpacer()); + jRow = JsonArrayInsert(JsonArray(), NuiHeight(NuiWidth(NuiGroup(NuiCol(jGroupCol)), 143.0), 442.0)); + // Make the Color Group. + // Row 550 (groups)********************************************************* 508 / 361 / 184 + json jImage = NuiEnabled(NuiId(NuiImage(NuiBind("color_pallet_image"), JsonInt(0), JsonInt(0), JsonInt(1)), "color_pallet"), NuiBind("color_pallet_event")); + jImage = NuiWidth(jImage, 320.0); // 256 + 64 + jImage = NuiHeight(jImage, 220.0); // 176 + 44 + jImage = NuiTooltip(jImage, NuiBind("color_pallet_tooltip")); + json jIndicator = JsonArrayInsert(JsonArray(), NuiDrawListRect(JsonBool(TRUE), NuiColor(255,0,0), JsonBool(FALSE), JsonFloat(2.0), NuiBind("color_pallet_pointer"))); + jImage = NuiDrawList(jImage, JsonBool(FALSE), jIndicator); + jGroupRow = JsonArrayInsert(JsonArray(), jImage); + jGroupCol = JsonArrayInsert(JsonArray(), NuiRow(jGroupRow)); + // Row 551 (groups)********************************************************* 508 / 379 /202 + jGroupRow = CreateLabel(JsonArray(), "Part To Color", "lbl_color_parts", 320.0f, 10.0f); + jGroupCol = JsonArrayInsert(jGroupCol, NuiRow(jGroupRow)); + // Row 552 (groups)********************************************************* 508 / 417 /240 + jGroupRow = CreateButtonSelect(JsonArray(), "Right", "btn_right_part_color", 98.0, 30.0, "btn_right_part_color_tooltip"); + jGroupRow = JsonArrayInsert(jGroupRow, NuiSpacer()); + jGroupRow = CreateButtonSelect(jGroupRow, "All", "btn_all_color", 98.0, 30.0, "btn_all_color_tooltip"); + jGroupRow = JsonArrayInsert(jGroupRow, NuiSpacer()); + jGroupRow = CreateButtonSelect(jGroupRow, "Left", "btn_left_part_color", 98.0, 30.0, "btn_left_part_color_tooltip"); + jGroupCol = JsonArrayInsert(jGroupCol, NuiRow(jGroupRow)); + // Row 553 (groups)********************************************************* 508 / 435 / 258 + jGroupRow = CreateLabel(JsonArray(), "Part Color To Reset", "lbl_reset_parts", 320.0f, 10.0f); + jGroupCol = JsonArrayInsert(jGroupCol, NuiRow(jGroupRow)); + // Row 554 (groups)********************************************************* 508 / 473 /296 + jGroupRow = CreateButton(JsonArray(), "Right", "btn_right_part_reset", 98.0, 30.0, -1.0, "btn_right_part_reset_tooltip"); + jGroupRow = JsonArrayInsert(jGroupRow, NuiSpacer()); + jGroupRow = CreateButton(jGroupRow, "All", "btn_all_reset", 50.0, 30.0, -1.0, "btn_all_reset_tooltip"); + jGroupRow = JsonArrayInsert(jGroupRow, NuiSpacer()); + jGroupRow = CreateButton(jGroupRow, "Left", "btn_left_part_reset", 98.0, 30.0, -1.0, "btn_left_part_reset_tooltip"); + jGroupCol = JsonArrayInsert(jGroupCol, NuiRow(jGroupRow)); + // Row 555 (groups)********************************************************* 508 / 491 / 314 + jGroupRow = CreateLabel(JsonArray(), "Material to Color", "lbl_material_color", 320.0f, 10.0f); + jGroupCol = JsonArrayInsert(jGroupCol, NuiRow(jGroupRow)); + // Row 556 (groups)********************************************************* 508 / 529 /352 + jGroupRow = CreateButtonSelect(JsonArray(), "Leather 1", "btn_material_0", 98.0, 30.0); + jGroupRow = JsonArrayInsert(jGroupRow, NuiSpacer()); + jGroupRow = CreateButtonSelect(jGroupRow, "Cloth 1", "btn_material_2", 98.0, 30.0); + jGroupRow = JsonArrayInsert(jGroupRow, NuiSpacer()); + jGroupRow = CreateButtonSelect(jGroupRow, "Metal 1", "btn_material_4", 98.0, 30.0); + jGroupCol = JsonArrayInsert(jGroupCol, NuiRow(jGroupRow)); + // Row 557 (groups)********************************************************* 508 / 567 / 390 + jGroupRow = CreateButtonSelect(JsonArray(), "Leather 2", "btn_material_1", 98.0, 30.0); + jGroupRow = JsonArrayInsert(jGroupRow, NuiSpacer()); + jGroupRow = CreateButtonSelect(jGroupRow, "Cloth 2", "btn_material_3", 98.0, 30.0); + jGroupRow = JsonArrayInsert(jGroupRow, NuiSpacer()); + jGroupRow = CreateButtonSelect(jGroupRow, "Metal 2", "btn_material_5", 98.0, 30.0); + jGroupCol = JsonArrayInsert(jGroupCol, NuiRow(jGroupRow)); + jGroupCol = JsonArrayInsert(jGroupCol, NuiSpacer()); + jRow = JsonArrayInsert(jRow, NuiHeight(NuiWidth(NuiGroup(NuiCol(jGroupCol)), 339.0), 442.0)); // 275 398 + jCol = JsonArrayInsert(jCol, NuiRow(jRow)); + json jLayout = NuiCol(jCol); + // Get the window location to restore it from the database. + json jGeometry = JsonObjectGet(jCraft, "CRAFT_MENU"); + float fX = JsonGetFloat(JsonObjectGet(jGeometry, "x")); + float fY = JsonGetFloat(JsonObjectGet(jGeometry, "y")); + string sPCWindow; + int nToken = SetWindow(oPC, jLayout, "crafting_nui", "Crafting", + fX, fY, 508.0, 700.0, FALSE, FALSE, FALSE, FALSE, TRUE, "pe_crafting"); // 444 645 + // Set all binds, events, and watches. + NuiSetBindWatch (oPC, nToken, "window_geometry", TRUE); + int nItem = JsonGetInt(JsonObjectGet(jCraft, CRAFT_ITEM_SELECTION)); + object oItem = GetSelectedItem(oTarget, nItem); + // Row 1 + NuiSetBind(oPC, nToken, "txt_item_name", JsonString(GetName(oItem))); + if(!ai_GetIsServer() || ai_GetIsDungeonMaster(oPC) || ALLOW_CRAFT_NAMES) + { + NuiSetBind(oPC, nToken, "txt_item_name_event", JsonBool(TRUE)); + NuiSetBindWatch(oPC, nToken, "txt_item_name", TRUE); + } + // Row 2 + NuiSetBind(oPC, nToken, "btn_info_event", JsonBool(TRUE)); + NuiSetBind(oPC, nToken, "btn_info_tooltip", JsonString(" Look at and change item information")); + NuiSetBind(oPC, nToken, "btn_wardrobe_event", JsonBool(TRUE)); + NuiSetBind(oPC, nToken, "btn_wardrobe_tooltip", JsonString(" Use your wardrobe to save/load item appearances")); + int nLight = GetLocalInt(oPC, CRAFT_HIGHLIGHT) + GetLocalInt(oPC, CRAFT_ULTRALIGHT); + NuiSetBind(oPC, nToken, "btn_highlight", JsonBool(nLight)); + NuiSetBind(oPC, nToken, "btn_highlight_event", JsonBool(TRUE)); + NuiSetBind(oPC, nToken, "btn_highlight_tooltip", JsonString(" Left click for White light, Right click for Ultravision")); + // Row 3 + NuiSetBind(oPC, nToken, "btn_save_event", JsonBool(FALSE)); + NuiSetBind(oPC, nToken, "btn_save_tooltip", JsonString(" Save current changes")); + NuiSetBind(oPC, nToken, "btn_select_target_event", JsonBool(TRUE)); + NuiSetBind(oPC, nToken, "btn_select_target_tooltip", JsonString(" Select another party member or Item")); + NuiSetBind(oPC, nToken, "btn_cancel_label", JsonString("Exit")); + NuiSetBind(oPC, nToken, "btn_cancel_event", JsonBool(TRUE)); + NuiSetBind(oPC, nToken, "btn_cancel_tooltip", JsonString(" Exit the crafting menu")); + // Row 4 Labels. + // Row 5 Groups. + // Row 51 title. + // Row 52 + NuiSetBind(oPC, nToken, "item_combo_selected", JsonInt(nItem)); + NuiSetBind(oPC, nToken, "item_combo_event", JsonBool(TRUE)); + NuiSetBindWatch(oPC, nToken, "item_combo_selected", TRUE); + // Row 53 title. + // Row 54 + int nSelected = JsonGetInt(JsonObjectGet(jCraft, CRAFT_MODEL_SELECTION)); + if(nItem == 1 || nItem == 2 || nItem == 4) + { + if(GetHiddenWhenEquipped(oItem)) nSelected = 1; + else nSelected = 0; + } + NuiSetBind(oPC, nToken, "model_combo_selected", JsonInt (nSelected)); + NuiSetBind(oPC, nToken, "model_combo_event", JsonBool (TRUE)); + NuiSetBindWatch(oPC, nToken, "model_combo_selected", TRUE); + // Row 55, 56, 57 titles + // Row 58 top, 59 middle, 510 bottom + string sModelTop, sModelMiddle, sModelBottom; + // Model Group + if(ai_GetIsWeapon(oItem)) + { + int nModel = GetItemAppearance(oItem, ITEM_APPR_TYPE_WEAPON_MODEL, 0); + int nColor = GetItemAppearance(oItem, ITEM_APPR_TYPE_WEAPON_COLOR, 0); + int nModelNumber = (nModel * 10) + nColor; + sModelTop = IntToString(nModelNumber); + nModel = GetItemAppearance(oItem, ITEM_APPR_TYPE_WEAPON_MODEL, 1); + nColor = GetItemAppearance(oItem, ITEM_APPR_TYPE_WEAPON_COLOR, 1); + nModelNumber = (nModel * 10) + nColor; + sModelMiddle = IntToString(nModelNumber); + nModel = GetItemAppearance(oItem, ITEM_APPR_TYPE_WEAPON_MODEL, 2); + nColor = GetItemAppearance(oItem, ITEM_APPR_TYPE_WEAPON_COLOR, 2); + nModelNumber = (nModel * 10) + nColor; + sModelBottom = IntToString(nModelNumber); + // Row 55 + NuiSetBind(oPC, nToken, "top_title_label", JsonString("Top")); + // Row 56 + //NuiSetBind(oPC, nToken, "txt_model_number_t_event", JsonBool(TRUE)); + NuiSetBind(oPC, nToken, "txt_model_number_t", JsonString(sModelTop)); + NuiSetBind(oPC, nToken, "btn_prev_t_event", JsonBool(TRUE)); + NuiSetBind(oPC, nToken, "btn_next_t_event", JsonBool(TRUE)); + // Row 57 + NuiSetBind(oPC, nToken, "middle_title_label", JsonString("Middle")); + // Row 58 + //NuiSetBind(oPC, nToken, "txt_model_number_m_event", JsonBool(TRUE)); + NuiSetBind(oPC, nToken, "txt_model_number_m", JsonString(sModelMiddle)); + NuiSetBind(oPC, nToken, "btn_prev_m_event", JsonBool(TRUE)); + NuiSetBind(oPC, nToken, "btn_next_m_event", JsonBool(TRUE)); + // Row 59 + NuiSetBind(oPC, nToken, "bottom_title_label", JsonString("Bottom")); + // Row 510 + //NuiSetBind(oPC, nToken, "txt_model_number_b_event", JsonBool(TRUE)); + NuiSetBind(oPC, nToken, "txt_model_number_b", JsonString(sModelBottom)); + NuiSetBind(oPC, nToken, "btn_prev_b_event", JsonBool(TRUE)); + NuiSetBind(oPC, nToken, "btn_next_b_event", JsonBool(TRUE)); + // Row 511 + NuiSetBind(oPC, nToken, "btn_randomize_event", JsonBool(TRUE)); + NuiSetBind(oPC, nToken, "btn_randomize_tooltip", JsonString(" Randomize the selected weapon")); + } + // Armor and clothing + else if(nItem == 0) + { + nSelected = GetArmorModelSelected(oPC); + // These models only have one side so make sure we are not linked. + if (nSelected == ITEM_APPR_ARMOR_MODEL_NECK || + nSelected == ITEM_APPR_ARMOR_MODEL_TORSO || + nSelected == ITEM_APPR_ARMOR_MODEL_BELT || + nSelected == ITEM_APPR_ARMOR_MODEL_PELVIS || + nSelected == ITEM_APPR_ARMOR_MODEL_ROBE) + { + sModelMiddle = IntToString(GetItemAppearance(oItem, ITEM_APPR_TYPE_ARMOR_MODEL, nSelected)); + // Row 55 + NuiSetBind(oPC, nToken, "top_title_label", JsonString("")); + // Row 56 + //NuiSetBind(oPC, nToken, "txt_model_number_t_event", JsonBool(FALSE)); + NuiSetBind(oPC, nToken, "txt_model_name_t", JsonString("")); + NuiSetBind(oPC, nToken, "btn_prev_t_event", JsonBool(FALSE)); + NuiSetBind(oPC, nToken, "btn_next_t_event", JsonBool(FALSE)); + // Row 57 + NuiSetBind(oPC, nToken, "middle_title_label", JsonString("Model")); + // Row 58 + //NuiSetBind(oPC, nToken, "txt_model_number_m_event", JsonBool(TRUE)); + NuiSetBind(oPC, nToken, "txt_model_number_m", JsonString(sModelMiddle)); + NuiSetBind(oPC, nToken, "btn_prev_m_event", JsonBool(TRUE)); + NuiSetBind(oPC, nToken, "btn_next_m_event", JsonBool(TRUE)); + // Row 59 + NuiSetBind(oPC, nToken, "bottom_title_label", JsonString("")); + // Row 510 + //NuiSetBind(oPC, nToken, "txt_model_number_b_event", JsonBool(FALSE)); + NuiSetBind(oPC, nToken, "txt_model_number_b", JsonString("")); + NuiSetBind(oPC, nToken, "btn_prev_b_event", JsonBool(FALSE)); + NuiSetBind(oPC, nToken, "btn_next_b_event", JsonBool(FALSE)); + } + else + { + sModelTop = IntToString(GetItemAppearance(oItem, ITEM_APPR_TYPE_ARMOR_MODEL, nSelected)); + if(nSelected == ITEM_APPR_ARMOR_MODEL_RTHIGH) nSelected--; + else nSelected++; + sModelBottom = IntToString(GetItemAppearance(oItem, ITEM_APPR_TYPE_ARMOR_MODEL, nSelected)); + // Row 55 + NuiSetBind(oPC, nToken, "top_title_label", JsonString("Right")); + // Row 56 + //NuiSetBind(oPC, nToken, "txt_model_number_t_event", JsonBool(TRUE)); + NuiSetBind(oPC, nToken, "txt_model_number_t", JsonString(sModelTop)); + NuiSetBind(oPC, nToken, "btn_prev_t_event", JsonBool(TRUE)); + NuiSetBind(oPC, nToken, "btn_next_t_event", JsonBool(TRUE)); + // Row 57 + NuiSetBind(oPC, nToken, "middle_title_label", JsonString("Right & Left")); + // Row 58 + //NuiSetBind(oPC, nToken, "txt_model_number_m_event", JsonBool(TRUE)); + NuiSetBind(oPC, nToken, "txt_model_number_m", JsonString(sModelTop)); + NuiSetBind(oPC, nToken, "btn_prev_m_event", JsonBool(TRUE)); + NuiSetBind(oPC, nToken, "btn_next_m_event", JsonBool(TRUE)); + // Row 59 + NuiSetBind(oPC, nToken, "bottom_title_label", JsonString("Left")); + // Row 510 + //NuiSetBind(oPC, nToken, "txt_model_number_b_event", JsonBool(TRUE)); + NuiSetBind(oPC, nToken, "txt_model_number_b", JsonString(sModelBottom)); + NuiSetBind(oPC, nToken, "btn_prev_b_event", JsonBool(TRUE)); + NuiSetBind(oPC, nToken, "btn_next_b_event", JsonBool(TRUE)); + } + // Row 511 + NuiSetBind(oPC, nToken, "btn_randomize_event", JsonBool(TRUE)); + NuiSetBind(oPC, nToken, "btn_randomize_tooltip", JsonString(" Randomize the selected armor")); + } + // Shields, Cloaks, and Helmets. + else + { + sModelMiddle = IntToString(GetItemAppearance(oItem, ITEM_APPR_TYPE_SIMPLE_MODEL, 0)); + // Row 55 + NuiSetBind(oPC, nToken, "top_title_label", JsonString("")); + // Row 56 + //NuiSetBind(oPC, nToken, "txt_model_number_t_event", JsonBool(FALSE)); + NuiSetBind(oPC, nToken, "txt_model_number_t", JsonString("")); + NuiSetBind(oPC, nToken, "btn_prev_t_event", JsonBool(FALSE)); + NuiSetBind(oPC, nToken, "btn_next_t_event", JsonBool(FALSE)); + // Row 57 + NuiSetBind(oPC, nToken, "middle_title_label", JsonString("Model")); + // Row 58 + //NuiSetBind(oPC, nToken, "txt_model_number_m_event", JsonBool(TRUE)); + NuiSetBind(oPC, nToken, "txt_model_number_m", JsonString(sModelMiddle)); + NuiSetBind(oPC, nToken, "btn_prev_m_event", JsonBool(TRUE)); + NuiSetBind(oPC, nToken, "btn_next_m_event", JsonBool(TRUE)); + // Row 59 + NuiSetBind(oPC, nToken, "bottom_title_label", JsonString("")); + // Row 510 + //NuiSetBind(oPC, nToken, "txt_model_number_b_event", JsonBool(FALSE)); + NuiSetBind(oPC, nToken, "txt_model_number_b", JsonString("")); + NuiSetBind(oPC, nToken, "btn_prev_b_event", JsonBool(FALSE)); + NuiSetBind(oPC, nToken, "btn_next_b_event", JsonBool(FALSE)); + // Row 511 + NuiSetBind(oPC, nToken, "btn_randomize_event", JsonBool(TRUE)); + NuiSetBind(oPC, nToken, "btn_randomize_tooltip", JsonString(" Randomize the selected item")); + } + // Color Group + if(ai_GetIsWeapon(oItem) || ai_GetIsShield(oItem)) + { + // Need to disable the color widgets. + // Row 511 + NuiSetBind(oPC, nToken, "color_pallet_image", JsonString("gui_pal_tattoo")); + NuiSetBind(oPC, nToken, "color_pallet_image_event", JsonBool(FALSE)); + // Row 512 - Label Part to Color + // Row 5l3 + NuiSetBind(oPC, nToken, "btn_right_part_color_event", JsonBool(FALSE)); + NuiSetBind(oPC, nToken, "btn_all_color_event", JsonBool(FALSE)); + NuiSetBind(oPC, nToken, "btn_left_part_color_event", JsonBool(FALSE)); + // Row 514 - Label Part Color to Reset + // Row 515 + NuiSetBind(oPC, nToken, "btn_right_part_reset_event", JsonBool(FALSE)); + NuiSetBind(oPC, nToken, "btn_all_reset_event", JsonBool(FALSE)); + NuiSetBind(oPC, nToken, "btn_left_part_reset_event", JsonBool(FALSE)); + // Row 516 - Label Material to Color + // Row 517 + NuiSetBind(oPC, nToken, "btn_material_0", JsonBool(FALSE)); + NuiSetBind(oPC, nToken, "btn_material_2", JsonBool(FALSE)); + NuiSetBind(oPC, nToken, "btn_material_4", JsonBool(FALSE)); + // Row 518 + NuiSetBind(oPC, nToken, "btn_material_1", JsonBool(FALSE)); + NuiSetBind(oPC, nToken, "btn_material_3", JsonBool(FALSE)); + NuiSetBind(oPC, nToken, "btn_material_5", JsonBool(FALSE)); + SetMaterialButtons(oPC, nToken, -1); + } + // Armor and clothing + else if(nItem == 0) + { + // Row 511 + string sColorPallet = GetLocalString(oPC, CRAFT_COLOR_PALLET); + if(sColorPallet == "") sColorPallet = "gui_pal_tattoo"; + int nMaterialSelected = JsonGetInt(JsonObjectGet(jCraft, CRAFT_MATERIAL_SELECTION)); + int nModelSelected = GetArmorModelSelected(oPC); + // Row 511 + NuiSetBind(oPC, nToken, "color_pallet_image", JsonString(sColorPallet)); + NuiSetBind(oPC, nToken, "color_pallet_event", JsonBool(TRUE)); + NuiSetBind(oPC, nToken, "color_pallet_tooltip", JsonString(" Select a color or use the mouse wheel")); + int nSelectedRight, nSelectedAll, nSelectedLeft; + string sColorAll = IntToString(GetItemAppearance(oItem, ITEM_APPR_TYPE_ARMOR_COLOR, nMaterialSelected)); + // These models only have one side so make sure we are not linked. + if (nModelSelected == ITEM_APPR_ARMOR_MODEL_NECK || + nModelSelected == ITEM_APPR_ARMOR_MODEL_TORSO || + nModelSelected == ITEM_APPR_ARMOR_MODEL_BELT || + nModelSelected == ITEM_APPR_ARMOR_MODEL_PELVIS || + nModelSelected == ITEM_APPR_ARMOR_MODEL_ROBE) + { + // Row 512 - Label Part to Color + // Row 5l3 + int nPartColor = GetHasPartColor(oItem, nModelSelected, "Right"); + nSelectedRight = JsonGetInt(JsonObjectGet(jCraft, CRAFT_RIGHT_PART_COLOR)); + if(!nSelectedRight && nPartColor) + { + nSelectedRight = TRUE; + nSelectedLeft = FALSE; + } + nSelectedAll = !nSelectedRight; + jCraft = JsonObjectSet(jCraft, CRAFT_ALL_COLOR, JsonBool(nSelectedAll)); + jCraft = JsonObjectSet(jCraft, CRAFT_RIGHT_PART_COLOR, JsonBool(nSelectedRight)); + NuiSetBind(oPC, nToken, "btn_right_part_color", JsonBool(nSelectedRight)); + NuiSetBind(oPC, nToken, "btn_right_part_color_event", JsonBool(TRUE)); + NuiSetBind(oPC, nToken, "btn_all_color", JsonBool(nSelectedAll)); + NuiSetBind(oPC, nToken, "btn_all_color_event", JsonBool(TRUE)); + NuiSetBind(oPC, nToken, "btn_left_part_color", JsonBool(FALSE)); + NuiSetBind(oPC, nToken, "btn_left_part_color_event", JsonBool(FALSE)); + // Row 514 - Label Part Color to Reset + // Row 5l5 + nSelectedRight = GetHasPartColor(oItem, nModelSelected, "Right"); + nSelectedAll = nSelectedRight; + NuiSetBind(oPC, nToken, "btn_right_part_reset_event", JsonBool(nSelectedRight)); + NuiSetBind(oPC, nToken, "btn_all_reset_event", JsonBool(nSelectedAll)); + NuiSetBind(oPC, nToken, "btn_left_part_reset_event", JsonBool(FALSE)); + } + else + { + // Row 512 - Label Part to Color + // Row 5l3 + int nPartColor = GetHasPartColor(oItem, nModelSelected, "Right"); + nSelectedRight = JsonGetInt(JsonObjectGet(jCraft, CRAFT_RIGHT_PART_COLOR)); + if(!nSelectedRight && nPartColor) + { + nSelectedRight = TRUE; + nSelectedLeft = FALSE; + } + else + { + nPartColor = GetHasPartColor(oItem, nModelSelected, "Left"); + nSelectedLeft = JsonGetInt(JsonObjectGet(jCraft, CRAFT_LEFT_PART_COLOR)); + if(!nSelectedLeft && nPartColor) + { + nSelectedLeft = TRUE; + nSelectedRight = FALSE; + } + } + nSelectedAll = !nSelectedRight && !nSelectedLeft; + jCraft = JsonObjectSet(jCraft, CRAFT_LEFT_PART_COLOR, JsonBool(nSelectedLeft)); + jCraft = JsonObjectSet(jCraft, CRAFT_ALL_COLOR, JsonBool(nSelectedAll)); + jCraft = JsonObjectSet(jCraft, CRAFT_RIGHT_PART_COLOR, JsonBool(nSelectedRight)); + NuiSetBind(oPC, nToken, "btn_right_part_color", JsonBool(nSelectedRight)); + NuiSetBind(oPC, nToken, "btn_right_part_color_event", JsonBool(TRUE)); + NuiSetBind(oPC, nToken, "btn_all_color", JsonBool(nSelectedAll)); + NuiSetBind(oPC, nToken, "btn_all_color_event", JsonBool(TRUE)); + NuiSetBind(oPC, nToken, "btn_left_part_color", JsonBool(nSelectedLeft)); + NuiSetBind(oPC, nToken, "btn_left_part_color_event", JsonBool(TRUE)); + // Row 514 - Label Part Color to Reset + // Row 5l5 + nSelectedRight = GetHasPartColor(oItem, nModelSelected, "Right"); + nSelectedLeft = GetHasPartColor(oItem, nModelSelected, "Left"); + nSelectedAll = nSelectedRight || nSelectedLeft; + NuiSetBind(oPC, nToken, "btn_right_part_reset_event", JsonBool(nSelectedRight)); + NuiSetBind(oPC, nToken, "btn_all_reset_event", JsonBool(nSelectedAll)); + NuiSetBind(oPC, nToken, "btn_left_part_reset_event", JsonBool(nSelectedLeft)); + } + int nColor; + if(!JsonGetInt(NuiGetBind(oPC, nToken, "btn_all_color"))) + { + int nModelSelected = GetArmorModelSelected(oPC); + if(!JsonGetInt(JsonObjectGet(jCraft, CRAFT_RIGHT_PART_COLOR))) + { + // Note: Right Thigh and Left Thigh are backwards so this fixes that! + if (nModelSelected == ITEM_APPR_ARMOR_MODEL_RTHIGH) nModelSelected--; + else nModelSelected++; + } + int nIndex = ITEM_APPR_ARMOR_NUM_COLORS + (nModelSelected * ITEM_APPR_ARMOR_NUM_COLORS) + nMaterialSelected; + nColor = GetItemAppearance(oItem, ITEM_APPR_TYPE_ARMOR_COLOR, nIndex); + } + else nColor = 255; + if(nColor == 255) nColor = GetItemAppearance(oItem, ITEM_APPR_TYPE_ARMOR_COLOR, nMaterialSelected); + float fPointX = IntToFloat((nColor - ((nColor / 16) * 16)) * 20); + float fPointY = IntToFloat((nColor / 16) * 20); + NuiSetBind(oPC, nToken, "color_pallet_pointer", NuiRect(fPointX, fPointY, 20.0, 20.0)); + // Row 516 - Label Material to Color + // Row 517 & 518 + NuiSetBind(oPC, nToken, "btn_right_part_color_tooltip", JsonString(" Select the right part to be uniquely colored")); + NuiSetBind(oPC, nToken, "btn_all_color_tooltip", JsonString(" Select all parts to be colored")); + NuiSetBind(oPC, nToken, "btn_left_part_color_tooltip", JsonString(" Select the left part to be uniquely colored")); + NuiSetBind(oPC, nToken, "btn_right_part_reset_tooltip", JsonString(" Clears the right part's unique color")); + NuiSetBind(oPC, nToken, "btn_all_reset_tooltip", JsonString(" Clears all parts unique colors")); + NuiSetBind(oPC, nToken, "btn_left_part_reset_tooltip", JsonString(" Clears the left part's unique color")); + nSelected = JsonGetInt(JsonObjectGet(jCraft, CRAFT_MATERIAL_SELECTION)); + SetMaterialButtons(oPC, nToken, nSelected); + SetLocalJson(oPC, CRAFT_JSON, jCraft); + } + // Cloaks and Helmets. + else + { + // Row 511 + string sColorPallet = GetLocalString(oPC, CRAFT_COLOR_PALLET); + if(sColorPallet == "") sColorPallet = "gui_pal_tattoo"; + int nMaterialSelected = JsonGetInt(JsonObjectGet(jCraft, CRAFT_MATERIAL_SELECTION)); + int nModelSelected = JsonGetInt(JsonObjectGet(jCraft, CRAFT_MODEL_SELECTION)); + int nColor = GetItemAppearance(oItem, ITEM_APPR_TYPE_ARMOR_COLOR, nMaterialSelected); + float fPointX = IntToFloat((nColor - ((nColor / 16) * 16)) * 20); + float fPointY = IntToFloat((nColor / 16) * 20); + NuiSetBind(oPC, nToken, "color_pallet_pointer", NuiRect(fPointX, fPointY, 20.0, 20.0)); + NuiSetBind(oPC, nToken, "color_pallet_image", JsonString(sColorPallet)); + NuiSetBind(oPC, nToken, "color_pallet_event", JsonBool(TRUE)); + NuiSetBind(oPC, nToken, "color_pallet_tooltip", JsonString(" Select a color or use the mouse wheel")); + // Row 512 - Label Part to Color + // Row 5l3 + NuiSetBind(oPC, nToken, "btn_right_part_color_event", JsonBool(FALSE)); + NuiSetBind(oPC, nToken, "btn_right_part_color_event", JsonBool(FALSE)); + NuiSetBind(oPC, nToken, "btn_all_color_event", JsonBool(TRUE)); + NuiSetBind(oPC, nToken, "btn_all_color", JsonBool(TRUE)); + NuiSetBind(oPC, nToken, "btn_left_part_color_event", JsonBool(FALSE)); + NuiSetBind(oPC, nToken, "btn_left_part_color", JsonBool(FALSE)); + // Row 514 - Label Part Color to Reset + // Row 5l5 + NuiSetBind(oPC, nToken, "btn_right_part_reset_event", JsonBool(FALSE)); + //NuiSetBind(oPC, nToken, "btn_all_reset_event", JsonBool(FALSE)); + NuiSetBind(oPC, nToken, "btn_left_part_reset_event", JsonBool(FALSE)); + // Row 516 - Label Material to Color + // Row 517 & 518 + nSelected = JsonGetInt(JsonObjectGet(jCraft, CRAFT_MATERIAL_SELECTION)); + SetMaterialButtons(oPC, nToken, nSelected); + } + // Lets make sure we clean up any cool down variables. + //DeleteLocalInt(oPC, CRAFT_COOL_DOWN); +} +int IfOnBannedBaseItemTypeList(object oPC, object oItem) +{ + int nIndex, nBaseItemType = GetBaseItemType(oItem); + int nBannedBaseItemType = StringToInt(ai_GetStringArray(CRAFT_BANNED_BASEITEMTYPES, nIndex)); + while(nBannedBaseItemType) + { + if(nBaseItemType == nBannedBaseItemType) + { + ai_SendMessages(GetName(oItem) + " cannot have it's appearance changed!", AI_COLOR_RED, oPC); + return TRUE; + } + nBannedBaseItemType = StringToInt(ai_GetStringArray(CRAFT_BANNED_BASEITEMTYPES, ++nIndex)); + } + return FALSE; } - diff --git a/_module/nss/pe_debug.nss b/_module/nss/pe_debug.nss index 5b6ad1a..dcc254c 100644 --- a/_module/nss/pe_debug.nss +++ b/_module/nss/pe_debug.nss @@ -57,13 +57,10 @@ void main() } ai_SendMessages("Your reputation with " + GetName(oTarget) + " has been set to neutral.", AI_COLOR_YELLOW, oPC); } - else if(sTargetMode == "SET_REPUTATION") + else if(sTargetMode == "CLEAR_COMMANDABLE") { - SetStandardFactionReputation(STANDARD_FACTION_COMMONER, 50, oTarget); - SetStandardFactionReputation(STANDARD_FACTION_DEFENDER, 50, oTarget); - SetStandardFactionReputation(STANDARD_FACTION_HOSTILE, 50, oTarget); - SetStandardFactionReputation(STANDARD_FACTION_MERCHANT, 50, oTarget); - ai_SendMessages(GetName(oTarget) + " has been set to a neutral reputation.", AI_COLOR_YELLOW, oPC); + SetCommandable(TRUE, oTarget); + ai_SendMessages(GetName(oTarget) + " has been set to be commandable.", AI_COLOR_YELLOW, oPC); } else if(sTargetMode == "DEBUG_INFO") { @@ -78,9 +75,14 @@ void main() int nObjectType = GetObjectType(oTarget); if(nObjectType == OBJECT_TYPE_CREATURE) { + string sText = "Yes"; + if(!GetCommandable(oTarget)) sText = "No"; + ai_SendMessages("Commandable: " + sText, AI_COLOR_WHITE, oPC); json jObject = ObjectToJson(oTarget); string sConversation = JsonGetString(GffGetResRef(jObject, "Conversation")); ai_SendMessages("Conversation: " + sConversation, AI_COLOR_CYAN, oPC); + int nCurrentAction = GetCurrentAction(oTarget); + ai_SendMessages("Current Action: " + IntToString(nCurrentAction), AI_COLOR_RED, oPC); SendMessageToPC(oPC, "Creature Event Scripts:"); string sScript = GetEventScript(oTarget, EVENT_SCRIPT_CREATURE_ON_HEARTBEAT); sScript += " [" + ResManGetAliasFor(sScript, RESTYPE_NCS) + "]"; @@ -507,14 +509,14 @@ void main() ai_SendMessages("Select an npc to change scripts for.", AI_COLOR_YELLOW, oPC); EnterTargetingMode(oPC, OBJECT_TYPE_CREATURE , MOUSECURSOR_CREATE, MOUSECURSOR_NOCREATE); } - else if(sElem == "btn_set_reputation") + else if(sElem == "btn_set_commandable") { // Set this variable on the player so PEPS can run the targeting script for this plugin. SetLocalString(oPC, AI_PLUGIN_TARGET_SCRIPT, "pe_debug"); // Set Targeting variables. - SetLocalString(oPC, AI_TARGET_MODE, "SET_REPUTATION"); + SetLocalString(oPC, AI_TARGET_MODE, "CLEAR_COMMANDABLE"); NuiDestroy(oPC, nToken); - ai_SendMessages("Select a creature to set all standard reputations to neutral.", AI_COLOR_YELLOW, oPC); + ai_SendMessages("Select a creature to set commandable.", AI_COLOR_YELLOW, oPC); EnterTargetingMode(oPC, OBJECT_TYPE_CREATURE, MOUSECURSOR_EXAMINE, MOUSECURSOR_NOEXAMINE); } else if(sElem == "btn_clear_reputation") diff --git a/_module/nss/pe_henchmen.nss b/_module/nss/pe_henchmen.nss index 4f6bf42..6d4412e 100644 --- a/_module/nss/pe_henchmen.nss +++ b/_module/nss/pe_henchmen.nss @@ -32,6 +32,7 @@ void main() vector vTarget = GetTargetingModeSelectedPosition(); location lLocation = Location(GetArea(oPC), vTarget, GetFacing(oPC)); object oObject = GetLocalObject(oPC, "AI_TARGET_OBJECT"); + DeleteLocalString(oPC, AI_TARGET_MODE); // If the user manually exited targeting mode without selecting a target, return if(!GetIsObjectValid(oTarget) && vTarget == Vector()) { @@ -327,6 +328,7 @@ void main() if(JsonGetType(jLvlStatList) == JSON_TYPE_NULL) { RemoveHenchman(oPC, oHenchman); + ChangeToStandardFaction(oHenchman, STANDARD_FACTION_DEFENDER); // Make sure to get a clean faction version of the henchman here. jHenchman = ObjectToJson(oHenchman, TRUE); jHenchman = CreateLevelStatList(jHenchman, oHenchman, oPC); diff --git a/_module/nss/pi_buffing.nss b/_module/nss/pi_buffing.nss index 6ce454e..18e40a3 100644 --- a/_module/nss/pi_buffing.nss +++ b/_module/nss/pi_buffing.nss @@ -37,6 +37,9 @@ void PopupWidgetBuffGUIPanel(object oPC); void main() { object oPC = OBJECT_SELF; + // Set window to not save until it has been created. + SetLocalInt(oPC, AI_NO_NUI_SAVE, TRUE); + DelayCommand(0.5f, DeleteLocalInt(oPC, AI_NO_NUI_SAVE)); // Check to make sure the database is setup before we do anything. CheckBuffDataAndInitialize(oPC, "menudata"); json jMenuData = GetBuffDatabaseJson(oPC, "spells", "menudata"); @@ -54,22 +57,30 @@ void main() if(StartingUp(oPC)) return; // Row 1 (Buttons) ********************************************************* 83 json jRow = CreateButtonSelect(JsonArray(), "Save", "btn_save", 60.0f, 30.0f, "btn_save_tooltip"); - CreateButton(jRow, "Clear", "btn_clear", 60.0f, 30.0f, -1.0, "btn_clear_tooltip"); - CreateButton(jRow, "Buff", "btn_buff", 60.0f, 30.0f, -1.0, "btn_buff_tooltip"); - CreateButtonSelect(jRow, "List 1", "btn_list1", 60.0f, 30.0f); - CreateButtonSelect(jRow, "List 2", "btn_list2", 60.0f, 30.0f); - CreateButtonSelect(jRow, "List 3", "btn_list3", 60.0f, 30.0f); - CreateButtonSelect(jRow, "List 4", "btn_list4", 60.0f, 30.0f); + jRow = CreateButton(jRow, "Clear", "btn_clear", 60.0f, 30.0f, -1.0, "btn_clear_tooltip"); + jRow = CreateButton(jRow, "Buff", "btn_buff", 60.0f, 30.0f, -1.0, "btn_buff_tooltip"); + jRow = CreateButtonSelect(jRow, "List 1", "btn_list1", 60.0f, 30.0f); + jRow = CreateButtonSelect(jRow, "List 2", "btn_list2", 60.0f, 30.0f); + jRow = CreateButtonSelect(jRow, "List 3", "btn_list3", 60.0f, 30.0f); + jRow = CreateButtonSelect(jRow, "List 4", "btn_list4", 60.0f, 30.0f); + jRow = CreateTextEditBox(jRow, "", "txt_spell_delay", 3, FALSE, 40.0f, 30.0f, "txt_spell_delay_tooltip"); // Add the row to the column. json jCol = JsonArrayInsert(JsonArray(), NuiRow(jRow)); // Row 2 (Buttons) ********************************************************* 121 jRow = JsonArrayInsert(JsonArray(), NuiSpacer()); jRow = CreateCheckBox(jRow, "Buff Widget", "buff_widget", 110.0, 30.0f, "buff_widget_tooltip"); jRow = CreateCheckBox(jRow, "Lock Widget", "lock_buff_widget", 110.0, 30.0f, "lock_buff_widget_tooltip"); - if(!AI_SERVER) + if(!ai_GetIsServer()) { jRow = CreateCheckBox(jRow, "Don't Check for Monsters", "chbx_no_monster_check", 200.0, 30.0f, "chbx_no_monster_check_tooltip"); } + else + { + if(ai_GetIsDungeonMaster(oPC)) + { + jRow = CreateCheckBox(jRow, "Don't Check for Monsters", "chbx_no_monster_check", 200.0, 30.0f, "chbx_no_monster_check_tooltip"); + } + } jRow = JsonArrayInsert(jRow, NuiSpacer()); // Add the row to the column. jCol = JsonArrayInsert(jCol, NuiRow(jRow)); @@ -96,7 +107,7 @@ void main() jCol = JsonArrayInsert(jCol, NuiRow(jRow)); // Get the window location to restore it from the database. float fWidth = IntToFloat(nIndex) * 39; - if(fWidth < 470.0) fWidth = 470.0; + if(fWidth < 530.0) fWidth = 530.0; float fX = JsonGetFloat(JsonArrayGet(jMenuData, 1)); float fY = JsonGetFloat(JsonArrayGet(jMenuData, 2)); if(fX == 0.0f && fY == 0.0f) @@ -108,6 +119,8 @@ void main() json jLayout = NuiCol(jCol); int nToken = SetWindow(oPC, jLayout, "plbuffwin", "Fast Buffing Spells", fX, fY, fWidth, 164.0, FALSE, FALSE, TRUE, FALSE, TRUE, "pe_buffing"); + // Set event watches for window inspector and save window location. + NuiSetBindWatch(oPC, nToken, "window_geometry", TRUE); // Set the elements to show events. int nSelected = GetEventScript(oPC, EVENT_SCRIPT_CREATURE_ON_SPELLCASTAT) == "pc_savebuffs"; NuiSetBind(oPC, nToken, "btn_save", JsonBool(nSelected)); @@ -131,11 +144,22 @@ void main() if(sList == "list4") NuiSetBind (oPC, nToken, "btn_list4", JsonBool (TRUE)); else NuiSetBind (oPC, nToken, "btn_list4", JsonBool(FALSE)); NuiSetBind(oPC, nToken, "btn_list4_event", JsonBool(TRUE)); + NuiSetBindWatch(oPC, nToken, "txt_spell_delay", TRUE); + string sText = " Allows you to adjust the speed that spells are cast in [0.1 seconds to 6.0 seconds]"; + NuiSetBind(oPC, nToken, "txt_spell_delay_event", JsonBool(TRUE)); + NuiSetBind(oPC, nToken, "txt_spell_delay_tooltip", JsonString(sText)); + CheckBuffDataAndInitialize(oPC, "Delay"); + sText = GetBuffDatabaseString(oPC, "spells", "Delay"); + float fDelay = StringToFloat(sText); + if(fDelay < 0.1f) fDelay = 0.1f; + else if(fDelay > 6.0f) fDelay = 6.0f; + sText = FloatToString(fDelay, 0, 1); + NuiSetBind(oPC, nToken, "txt_spell_delay", JsonString(sText)); int nValue = JsonGetInt(JsonArrayGet(jMenuData, 3)); NuiSetBind(oPC, nToken, "buff_widget_event", JsonBool(TRUE)); NuiSetBind(oPC, nToken, "buff_widget_check", JsonBool(nValue)); NuiSetBindWatch(oPC, nToken, "buff_widget_check", TRUE); - string sText = " Creates a set of 4 buttons on the screen for quick buffing."; + sText = " Creates a set of 4 buttons on the screen for quick buffing."; NuiSetBind(oPC, nToken, "buff_widget_tooltip", JsonString(sText)); nValue = JsonGetInt(JsonArrayGet(jMenuData, 4)); NuiSetBind(oPC, nToken, "lock_buff_widget_event", JsonBool(TRUE)); @@ -143,7 +167,7 @@ void main() NuiSetBindWatch(oPC, nToken, "lock_buff_widget_check", TRUE); sText = " Locks the buffing widget in place reducing its size."; NuiSetBind(oPC, nToken, "lock_buff_widget_tooltip", JsonString(sText)); - if(!AI_SERVER) + if(!ai_GetIsServer()) { NuiSetBind(oPC, nToken, "chbx_no_monster_check_event", JsonBool(TRUE)); nValue = GetLocalInt(oPC, FB_NO_MONSTER_CHECK); @@ -154,7 +178,7 @@ void main() } // Create buttons with spells listed. int nSpell, nClass, nLevel, nMetamagic, nDomain; - string sName, sTargetName, sResRef; + string sName, sTargetName, sCasterName, sResRef; nCntr = 0; nIndex = 0; while(nCntr <= BUFF_MAX_SPELLS) @@ -167,11 +191,13 @@ void main() nLevel = JsonGetInt(JsonArrayGet(jSpell, 2)); nMetamagic = JsonGetInt(JsonArrayGet(jSpell, 3)); nDomain = JsonGetInt(JsonArrayGet(jSpell, 4)); - sTargetName = JsonGetString(JsonArrayGet(jSpell, 5)); + sCasterName = JsonGetString(JsonArrayGet(jSpell, 5)); + sTargetName = JsonGetString(JsonArrayGet(jSpell, 6)); sResRef = Get2DAString("spells", "IconResRef", nSpell); - sName = " " + GetStringByStrRef(StringToInt(Get2DAString("spells", "Name", nSpell))); - sName += " (" + GetStringByStrRef(StringToInt(Get2DAString("classes", "Short", nClass))); - sName += " / " + IntToString (nLevel); + sName = " " + sCasterName + " ("; + sName += GetStringByStrRef(StringToInt(Get2DAString("classes", "Short", nClass))); + sName += " / " + IntToString (nLevel) + ") casting "; + sName += GetStringByStrRef(StringToInt(Get2DAString("spells", "Name", nSpell))); if(nMetamagic > 0) { if(nMetamagic == METAMAGIC_EMPOWER) sName += " / Empowered"; @@ -182,7 +208,7 @@ void main() else if(nMetamagic == METAMAGIC_STILL) sName += " / Still"; } if(nDomain > 0) sName += " / Domain"; - sName += ") " + sTargetName; + sName += " on " + sTargetName; sIndex = IntToString(nIndex++); NuiSetBind(oPC, nToken, "btn_spell_" + sIndex + "_event", JsonBool(TRUE)); NuiSetBind(oPC, nToken, "btn_spell_" + sIndex + "_image", JsonString(sResRef)); @@ -190,7 +216,6 @@ void main() } nCntr++; } - NuiSetBindWatch(oPC, nToken, "window_geometry", TRUE); } int StartingUp(object oPC) { @@ -295,44 +320,55 @@ void PopupWidgetBuffGUIPanel(object oPC) SetLocalInt(oPC, AI_NO_NUI_SAVE, TRUE); DelayCommand(0.5f, DeleteLocalInt (oPC, AI_NO_NUI_SAVE)); // Row 1 (buttons)********************************************************** - json jRow = JsonArray(); - CreateButtonImage(jRow, "ir_level1", "btn_one", 35.0f, 35.0f, 0.0); - CreateButtonImage(jRow, "ir_level2", "btn_two", 35.0f, 35.0f, 0.0); - CreateButtonImage(jRow, "ir_level3", "btn_three", 35.0f, 35.0f, 0.0); - CreateButtonImage(jRow, "ir_level4", "btn_four", 35.0f, 35.0f, 0.0); + json jRow = CreateButtonImage(JsonArray(), "ir_level1", "btn_one", 35.0f, 35.0f, 0.0); + jRow = CreateButtonImage(jRow, "ir_level2", "btn_two", 35.0f, 35.0f, 0.0); + jRow = CreateButtonImage(jRow, "ir_level3", "btn_three", 35.0f, 35.0f, 0.0); + jRow = CreateButtonImage(jRow, "ir_level4", "btn_four", 35.0f, 35.0f, 0.0); // Add the row to the column. json jCol = JsonArrayInsert(JsonArray(), NuiRow(jRow)); - json jWidget = GetBuffDatabaseJson(oPC, "spells", "menudata"); - int bAIBuffWidgetLock = JsonGetInt(JsonArrayGet(jWidget, 4)); + json jMenuData = GetBuffDatabaseJson(oPC, "spells", "menudata"); + int bAIBuffWidgetLock = JsonGetInt(JsonArrayGet(jMenuData, 4)); // Get the window location to restore it from the database. - float fX = JsonGetFloat(JsonArrayGet(jWidget, 5)); - float fY = JsonGetFloat(JsonArrayGet(jWidget, 6)); + float fX = JsonGetFloat(JsonArrayGet(jMenuData, 5)); + float fY = JsonGetFloat(JsonArrayGet(jMenuData, 6)); if(fX == 0.0f && fY == 0.0f) { fX = 10.0f; fY = 10.0f; } + float fGUI_Scale = IntToFloat(GetPlayerDeviceProperty(oPC, PLAYER_DEVICE_PROPERTY_GUI_SCALE)) / 100.0; if(bAIBuffWidgetLock) { - fX = fX + 4.0f; - fY = fY + 45.0f; + fX += 4.0f; + // GUI scales are a mess, I just figured them out per scale to keep the widget from moving. + if(fGUI_Scale == 1.0) fY += 37.0; + else if(fGUI_Scale == 1.1) fY += 38.0; + else if(fGUI_Scale == 1.2) fY += 40.0; + else if(fGUI_Scale == 1.3) fY += 42.0; + else if(fGUI_Scale == 1.4) fY += 43.0; + else if(fGUI_Scale == 1.5) fY += 45.0; + else if(fGUI_Scale == 1.6) fY += 47.0; + else if(fGUI_Scale == 1.7) fY += 48.0; + else if(fGUI_Scale == 1.8) fY += 50.0; + else if(fGUI_Scale == 1.9) fY += 52.0; + else if(fGUI_Scale == 2.0) fY += 54.0; } // Set the layout of the window. - json jLayout = NuiCol (jCol); + json jLayout = NuiCol(jCol); int nToken; - if(bAIBuffWidgetLock) nToken = SetWindow(oPC, jLayout, "widgetbuffwin", "Fast Buff Widget", fX, fY, 160.0, 62.0, FALSE, FALSE, FALSE, TRUE, FALSE, "pe_buffing"); - else nToken = SetWindow(oPC, jLayout, "widgetbuffwin", "Fast Buff Widget", fX, fY, 160.0, 95.0, FALSE, FALSE, FALSE, TRUE, TRUE, "pe_buffing"); + if(bAIBuffWidgetLock) nToken = SetWindow (oPC, jLayout, "widgetbuffwin", "Fast Buff Widget", fX, fY, 160.0, 62.0, FALSE, FALSE, FALSE, TRUE, FALSE, "pe_buffing"); + else nToken = SetWindow (oPC, jLayout, "widgetbuffwin", "Fast Buff Widget", fX, fY, 160.0, 95.0, FALSE, FALSE, FALSE, TRUE, TRUE, "pe_buffing"); // Set event watches for window inspector and save window location. - //NuiSetBindWatch(oPC, nToken, "collapsed", TRUE); - NuiSetBindWatch(oPC, nToken, "window_geometry", TRUE); + NuiSetBindWatch (oPC, nToken, "collapsed", TRUE); + NuiSetBindWatch (oPC, nToken, "window_geometry", TRUE); // Set the buttons to show events. //NuiSetBind (oPC, nToken, "btn_one", JsonBool (TRUE)); - NuiSetBind(oPC, nToken, "btn_one_event", JsonBool(TRUE)); - NuiSetBind(oPC, nToken, "btn_two", JsonBool(TRUE)); - NuiSetBind(oPC, nToken, "btn_two_event", JsonBool(TRUE)); - NuiSetBind(oPC, nToken, "btn_three", JsonBool(TRUE)); - NuiSetBind(oPC, nToken, "btn_three_event", JsonBool(TRUE)); - NuiSetBind(oPC, nToken, "btn_four", JsonBool(TRUE)); - NuiSetBind(oPC, nToken, "btn_four_event", JsonBool(TRUE)); + NuiSetBind (oPC, nToken, "btn_one_event", JsonBool (TRUE)); + NuiSetBind (oPC, nToken, "btn_two", JsonBool (TRUE)); + NuiSetBind (oPC, nToken, "btn_two_event", JsonBool (TRUE)); + NuiSetBind (oPC, nToken, "btn_three", JsonBool (TRUE)); + NuiSetBind (oPC, nToken, "btn_three_event", JsonBool (TRUE)); + NuiSetBind (oPC, nToken, "btn_four", JsonBool (TRUE)); + NuiSetBind (oPC, nToken, "btn_four_event", JsonBool (TRUE)); } diff --git a/_module/nss/pi_crafting.nss b/_module/nss/pi_crafting.nss index b7d6309..7df0bec 100644 --- a/_module/nss/pi_crafting.nss +++ b/_module/nss/pi_crafting.nss @@ -8,694 +8,20 @@ #include "0i_nui" #include "0i_items" #include "nw_inc_gff" -const string CRAFT_JSON = "CRAFT_JSON"; -const string CRAFT_COOL_DOWN = "CRAFT_COOL_DOWN"; -const string CRAFT_ITEM_SELECTION = "CRAFT_ITEM_SELECTION"; -const string CRAFT_MATERIAL_SELECTION = "CRAFT_MATERIAL_SELECTION"; -const string CRAFT_MODEL_SELECTION = "CRAFT_MODEL_SELECTION"; -const string CRAFT_COLOR_PALLET = "CRAFT_COLOR_PALLET"; -const string CRAFT_LEFT_PART_COLOR = "CRAFT_LEFT_PART_COLOR"; -const string CRAFT_ALL_COLOR = "CRAFT_ALL_COLOR"; -const string CRAFT_RIGHT_PART_COLOR = "CRAFT_RIGHT_PART_COLOR"; -const string CRAFT_TARGET = "CRAFT_TARGET"; -// Tag used in lighting effects. -const string CRAFT_HIGHLIGHT = "CRAFT_HIGHLIGHT"; -const string CRAFT_ULTRALIGHT = "CRAFT_ULTRALIGHT"; -json CreateItemCombo(object oPC, json jRow, string sComboBind); -json CreateModelCombo(object oPC, object oTarget, json jRow, string sComboBind); -json CreateMaterialCombo(object oPC, json jRow, string sComboBind); -// Sets the material buttons for use. -// nMaterial 0,1 Cloth 2,3 Leather 4,5 Metal -1 None. -void SetMaterialButtons(object oPC, int nToken, int nMaterial); -// Returns the correct item based on the crafting menu selected item. -object GetSelectedItem(object oTarget, int nItemSelected); -int GetArmorModelSelected(object oPC); -// Returns True if oItem, nPart has a per part color for sSide. -int GetHasPartColor(object oItem, int nPart, string sSide); // Does startup check if the game has just been loaded. int StartingUp(object oPC); void main() { object oPC = OBJECT_SELF; - object oTarget = GetLocalObject(oPC, CRAFT_TARGET); - if(oTarget == OBJECT_INVALID) oTarget = oPC; if(StartingUp(oPC)) return; - json jCraft = GetLocalJson(oPC, CRAFT_JSON); - if(JsonGetType(jCraft) == JSON_TYPE_NULL) jCraft = JsonObject(); - // Row 1 (Object Name)****************************************************** 508 / 83 - json jRow = CreateTextEditBox(JsonArray(), "plc_hold_bind", "txt_item_name", 50, FALSE, 486.0f, 30.0f); // 419 - json jCol = JsonArrayInsert(JsonArray(), NuiRow(jRow)); - // Row 2 (Object Name)****************************************************** 508 / 121 - jRow = JsonArray(); - if(!AI_SERVER) jRow = CreateButton(jRow, "Information", "btn_info", 160.0f, 30.0f, -1.0, "btn_info_tooltip"); - else - { - if(GetIsDM(oTarget)) - { - jRow = CreateButton(jRow, "Information", "btn_info", 160.0f, 30.0f, -1.0, "btn_info_tooltip"); - } - else jRow = JsonArrayInsert(jRow, NuiSpacer()); - } - jRow = CreateButton(jRow, "Wardrobe", "btn_wardrobe", 158.0f, 30.0f, -1.0, "btn_wardrobe_tooltip"); - jRow = CreateButtonSelect(jRow, "Add Light", "btn_highlight", 160.0f, 30.0f, "btn_highlight_tooltip"); - jCol = JsonArrayInsert(jCol, NuiRow(jRow)); - // Row 3 (Object Name)****************************************************** 508 / 159 - jRow = CreateButton(JsonArray(), "Save", "btn_save", 160.0f, 30.0f, -1.0, "btn_save_tooltip"); - jRow = CreateButton(jRow, "Select Target", "btn_select_target", 158.0f, 30.0f); - jRow = CreateButton(jRow, "", "btn_cancel", 160.0f, 30.0f, -1.0, "btn_cancel_tooltip"); - jCol = JsonArrayInsert(jCol, NuiRow(jRow)); - // Row 4 (labels)*********************************************************** 508 / 177 - jRow = CreateLabel(JsonArray(), "Model", "module_title", 143.0f, 10.0f); - jRow = CreateLabel(jRow, "Color", "color_title", 339.0f, 10.0f); - jRow = JsonArrayInsert(jCol, NuiRow(jRow)); - // Row 5 (groups) - // Row 51 (title)*********************************************************** 508 / 195 / 18 - json jGroupRow = CreateLabel(JsonArray(), "Item", "item__cmb_title", 128.0f, 10.0f); - json jGroupCol = JsonArrayInsert(JsonArray(), NuiRow(jGroupRow)); - // Row 52 (combo)*********************************************************** 508 / 233 / 56 - jGroupRow = CreateItemCombo(oPC, JsonArray(), "item_combo"); - jGroupCol = JsonArrayInsert(jGroupCol, NuiRow(jGroupRow)); - // Row 53 (title)*********************************************************** 508 / 251 / 74 - jGroupRow = CreateLabel(JsonArray(), "Model", "model_cmb_title",128.0f, 10.0f); - jGroupCol = JsonArrayInsert(jGroupCol, NuiRow(jGroupRow)); - // Row 54 (combo)*********************************************************** 508 / 289 / 112 - jGroupRow = CreateModelCombo(oPC, oTarget, JsonArray(), "model_combo"); - jGroupCol = JsonArrayInsert(jGroupCol, NuiRow(jGroupRow)); - // Row 55 (title)*********************************************************** 508 / 307 / 120 - jGroupRow = CreateLabel(JsonArray(), "", "top_title",128.0f, 10.0f); - jGroupCol = JsonArrayInsert(jGroupCol, NuiRow(jGroupRow)); - // Row 56 (top)************************************************************* 508 / 355 / 168 - jGroupRow = CreateButtonImage(JsonArray(), "nui_shld_left", "btn_prev_t", 40.0f, 40.0f); - // Removed TextEditBox for mobile - jGroupRow = CreateTextEditBox(jGroupRow, "place_holder", "txt_model_number_t", 3, FALSE, 40.0, 40.0); - //CreateLabel(jGroupRow, "", "txt_model_number_t", 40.0, 40.0); - jGroupRow = CreateButtonImage(jGroupRow, "nui_shld_right", "btn_next_t", 40.0f, 40.0f); - jGroupCol = JsonArrayInsert(jGroupCol, NuiRow(jGroupRow)); - // Row 57 (title)*********************************************************** 508 / 373 / 186 - jGroupRow = CreateLabel(JsonArray(), "", "middle_title",128.0f, 10.0f); - jGroupCol = JsonArrayInsert(jGroupCol, NuiRow(jGroupRow)); - // Row 58 (middle)********************************************************** 508 / 421 /234 - jGroupRow = CreateButtonImage(JsonArray(), "nui_shld_left", "btn_prev_m", 40.0f, 40.0f); - // Removed TextEditBox for mobile - jGroupRow = CreateTextEditBox(jGroupRow, "place_holder", "txt_model_number_m", 3, FALSE, 40.0, 40.0); - //CreateLabel(jGroupRow, "", "txt_model_number_m", 40.0, 40.0); - jGroupRow = CreateButtonImage(jGroupRow, "nui_shld_right", "btn_next_m", 40.0f, 40.0f); - jGroupCol = JsonArrayInsert(jGroupCol, NuiRow(jGroupRow)); - // Row 59 (title)*********************************************************** 508 / 439 / 252 - jGroupRow = CreateLabel(JsonArray(), "", "bottom_title",128.0f, 10.0f); - jGroupCol = JsonArrayInsert(jGroupCol, NuiRow(jGroupRow)); - // Row 510 (bottom)********************************************************* 508 / 487 /300 - jGroupRow = CreateButtonImage(JsonArray(), "nui_shld_left", "btn_prev_b", 40.0f, 40.0f); - // Removed TextEditBox for mobile - jGroupRow = CreateTextEditBox(jGroupRow, "place_holder", "txt_model_number_b", 3, FALSE, 40.0, 40.0); - //CreateLabel(jGroupRow, "", "txt_model_number_b", 40.0, 40.0); - jGroupRow = CreateButtonImage(jGroupRow, "nui_shld_right", "btn_next_b", 40.0f, 40.0f); - jGroupCol = JsonArrayInsert(jGroupCol, NuiRow(jGroupRow)); - // Row 511 (blank spacer) - jGroupRow = CreateLabel(JsonArray(), "", "blank_space",128.0f, 20.0f); - jGroupCol = JsonArrayInsert(jGroupCol, NuiRow(jGroupRow)); - // Row 512 (light)********************************************************** 508 / 487 /300 - jGroupRow = CreateButtonSelect(JsonArray(), "Randomize", "btn_randomize", 128.0f, 30.0f); - jGroupCol = JsonArrayInsert(jGroupCol, NuiRow(jGroupRow)); - jGroupCol = JsonArrayInsert(jGroupCol, NuiSpacer()); - jRow = JsonArrayInsert(JsonArray(), NuiHeight(NuiWidth(NuiGroup(NuiCol(jGroupCol)), 143.0), 442.0)); - // Make the Color Group. - // Row 550 (groups)********************************************************* 508 / 361 / 184 - json jImage = NuiEnabled(NuiId(NuiImage(NuiBind("color_pallet_image"), JsonInt(0), JsonInt(0), JsonInt(1)), "color_pallet"), NuiBind("color_pallet_event")); - jImage = NuiWidth(jImage, 320.0); // 256 + 64 - jImage = NuiHeight(jImage, 220.0); // 176 + 44 - jImage = NuiTooltip(jImage, NuiBind("color_pallet_tooltip")); - json jIndicator = JsonArrayInsert(JsonArray(), NuiDrawListRect(JsonBool(TRUE), NuiColor(255,0,0), JsonBool(FALSE), JsonFloat(2.0), NuiBind("color_pallet_pointer"))); - jImage = NuiDrawList(jImage, JsonBool(FALSE), jIndicator); - jGroupRow = JsonArrayInsert(JsonArray(), jImage); - jGroupCol = JsonArrayInsert(JsonArray(), NuiRow(jGroupRow)); - // Row 551 (groups)********************************************************* 508 / 379 /202 - jGroupRow = CreateLabel(JsonArray(), "Part To Color", "lbl_color_parts", 320.0f, 10.0f); - jGroupCol = JsonArrayInsert(jGroupCol, NuiRow(jGroupRow)); - // Row 552 (groups)********************************************************* 508 / 417 /240 - jGroupRow = CreateButtonSelect(JsonArray(), "Right", "btn_right_part_color", 98.0, 30.0, "btn_right_part_color_tooltip"); - jGroupRow = JsonArrayInsert(jGroupRow, NuiSpacer()); - jGroupRow = CreateButtonSelect(jGroupRow, "All", "btn_all_color", 98.0, 30.0, "btn_all_color_tooltip"); - jGroupRow = JsonArrayInsert(jGroupRow, NuiSpacer()); - jGroupRow = CreateButtonSelect(jGroupRow, "Left", "btn_left_part_color", 98.0, 30.0, "btn_left_part_color_tooltip"); - jGroupCol = JsonArrayInsert(jGroupCol, NuiRow(jGroupRow)); - // Row 553 (groups)********************************************************* 508 / 435 / 258 - jGroupRow = CreateLabel(JsonArray(), "Part Color To Reset", "lbl_reset_parts", 320.0f, 10.0f); - jGroupCol = JsonArrayInsert(jGroupCol, NuiRow(jGroupRow)); - // Row 554 (groups)********************************************************* 508 / 473 /296 - jGroupRow = CreateButton(JsonArray(), "Right", "btn_right_part_reset", 98.0, 30.0, -1.0, "btn_right_part_reset_tooltip"); - jGroupRow = JsonArrayInsert(jGroupRow, NuiSpacer()); - jGroupRow = CreateButton(jGroupRow, "All", "btn_all_reset", 50.0, 30.0, -1.0, "btn_all_reset_tooltip"); - jGroupRow = JsonArrayInsert(jGroupRow, NuiSpacer()); - jGroupRow = CreateButton(jGroupRow, "Left", "btn_left_part_reset", 98.0, 30.0, -1.0, "btn_left_part_reset_tooltip"); - jGroupCol = JsonArrayInsert(jGroupCol, NuiRow(jGroupRow)); - // Row 555 (groups)********************************************************* 508 / 491 / 314 - jGroupRow = CreateLabel(JsonArray(), "Material to Color", "lbl_material_color", 320.0f, 10.0f); - jGroupCol = JsonArrayInsert(jGroupCol, NuiRow(jGroupRow)); - // Row 556 (groups)********************************************************* 508 / 529 /352 - jGroupRow = CreateButtonSelect(JsonArray(), "Cloth 1", "btn_material_0", 98.0, 30.0); - jGroupRow = JsonArrayInsert(jGroupRow, NuiSpacer()); - jGroupRow = CreateButtonSelect(jGroupRow, "Leather 1", "btn_material_2", 98.0, 30.0); - jGroupRow = JsonArrayInsert(jGroupRow, NuiSpacer()); - jGroupRow = CreateButtonSelect(jGroupRow, "Metal 1", "btn_material_4", 98.0, 30.0); - jGroupCol = JsonArrayInsert(jGroupCol, NuiRow(jGroupRow)); - // Row 557 (groups)********************************************************* 508 / 567 / 390 - jGroupRow = CreateButtonSelect(JsonArray(), "Cloth 2", "btn_material_1", 98.0, 30.0); - jGroupRow = JsonArrayInsert(jGroupRow, NuiSpacer()); - jGroupRow = CreateButtonSelect(jGroupRow, "Leather 2", "btn_material_3", 98.0, 30.0); - jGroupRow = JsonArrayInsert(jGroupRow, NuiSpacer()); - jGroupRow = CreateButtonSelect(jGroupRow, "Metal 2", "btn_material_5", 98.0, 30.0); - jGroupCol = JsonArrayInsert(jGroupCol, NuiRow(jGroupRow)); - jGroupCol = JsonArrayInsert(jGroupCol, NuiSpacer()); - jRow = JsonArrayInsert(jRow, NuiHeight(NuiWidth(NuiGroup(NuiCol(jGroupCol)), 339.0), 442.0)); // 275 398 - jCol = JsonArrayInsert(jCol, NuiRow(jRow)); - json jLayout = NuiCol(jCol); - // Get the window location to restore it from the database. - json jGeometry = JsonObjectGet(jCraft, "CRAFT_MENU"); - float fX = JsonGetFloat(JsonObjectGet(jGeometry, "x")); - float fY = JsonGetFloat(JsonObjectGet(jGeometry, "y")); - string sPCWindow; - int nToken = SetWindow(oPC, jLayout, "crafting_nui", "Crafting", - fX, fY, 508.0, 700.0, FALSE, FALSE, FALSE, FALSE, TRUE, "pe_crafting"); // 444 645 - // Set all binds, events, and watches. - NuiSetBindWatch (oPC, nToken, "window_geometry", TRUE); - int nItem = JsonGetInt(JsonObjectGet(jCraft, CRAFT_ITEM_SELECTION)); - object oItem = GetSelectedItem(oTarget, nItem); - // Row 1 - NuiSetBind(oPC, nToken, "txt_item_name", JsonString(GetName(oItem))); - NuiSetBind(oPC, nToken, "txt_item_name_event", JsonBool(TRUE)); - NuiSetBindWatch(oPC, nToken, "txt_item_name", TRUE); - // Row 2 - NuiSetBind(oPC, nToken, "btn_info_event", JsonBool(TRUE)); - NuiSetBind(oPC, nToken, "btn_info_tooltip", JsonString(" Look at and change item information")); - NuiSetBind(oPC, nToken, "btn_wardrobe_event", JsonBool(TRUE)); - NuiSetBind(oPC, nToken, "btn_wardrobe_tooltip", JsonString(" Use your wardrobe to save/load item appearances")); - int nLight = GetLocalInt(oPC, CRAFT_HIGHLIGHT) + GetLocalInt(oPC, CRAFT_ULTRALIGHT); - NuiSetBind(oPC, nToken, "btn_highlight", JsonBool(nLight)); - NuiSetBind(oPC, nToken, "btn_highlight_event", JsonBool(TRUE)); - NuiSetBind(oPC, nToken, "btn_highlight_tooltip", JsonString(" Left click for White light, Right click for Ultravision")); - // Row 3 - NuiSetBind(oPC, nToken, "btn_save_event", JsonBool(FALSE)); - NuiSetBind(oPC, nToken, "btn_save_tooltip", JsonString(" Save current changes")); - NuiSetBind(oPC, nToken, "btn_select_target_event", JsonBool(TRUE)); - NuiSetBind(oPC, nToken, "btn_cancel_label", JsonString("Exit")); - NuiSetBind(oPC, nToken, "btn_cancel_event", JsonBool(TRUE)); - NuiSetBind(oPC, nToken, "btn_cancel_tooltip", JsonString(" Exit the crafting menu")); - // Row 4 Labels. - // Row 5 Groups. - // Row 51 title. - // Row 52 - NuiSetBind(oPC, nToken, "item_combo_selected", JsonInt(nItem)); - NuiSetBind(oPC, nToken, "item_combo_event", JsonBool(TRUE)); - NuiSetBindWatch(oPC, nToken, "item_combo_selected", TRUE); - // Row 53 title. - // Row 54 - int nSelected = JsonGetInt(JsonObjectGet(jCraft, CRAFT_MODEL_SELECTION)); - if(nItem == 1 || nItem == 2 || nItem == 4) - { - if(GetHiddenWhenEquipped(oItem)) nSelected = 1; - else nSelected = 0; - } - NuiSetBind(oPC, nToken, "model_combo_selected", JsonInt (nSelected)); - NuiSetBind(oPC, nToken, "model_combo_event", JsonBool (TRUE)); - NuiSetBindWatch(oPC, nToken, "model_combo_selected", TRUE); - // Row 55, 56, 57 titles - // Row 58 top, 59 middle, 510 bottom - string sModelTop, sModelMiddle, sModelBottom; - // Model Group - if(ai_GetIsWeapon(oItem)) - { - int nModel = GetItemAppearance(oItem, ITEM_APPR_TYPE_WEAPON_MODEL, 0); - int nColor = GetItemAppearance(oItem, ITEM_APPR_TYPE_WEAPON_COLOR, 0); - int nModelNumber = (nModel * 10) + nColor; - sModelTop = IntToString(nModelNumber); - nModel = GetItemAppearance(oItem, ITEM_APPR_TYPE_WEAPON_MODEL, 1); - nColor = GetItemAppearance(oItem, ITEM_APPR_TYPE_WEAPON_COLOR, 1); - nModelNumber = (nModel * 10) + nColor; - sModelMiddle = IntToString(nModelNumber); - nModel = GetItemAppearance(oItem, ITEM_APPR_TYPE_WEAPON_MODEL, 2); - nColor = GetItemAppearance(oItem, ITEM_APPR_TYPE_WEAPON_COLOR, 2); - nModelNumber = (nModel * 10) + nColor; - sModelBottom = IntToString(nModelNumber); - // Row 55 - NuiSetBind(oPC, nToken, "top_title_label", JsonString("Top")); - // Row 56 - //NuiSetBind(oPC, nToken, "txt_model_number_t_event", JsonBool(TRUE)); - NuiSetBind(oPC, nToken, "txt_model_number_t", JsonString(sModelTop)); - NuiSetBind(oPC, nToken, "btn_prev_t_event", JsonBool(TRUE)); - NuiSetBind(oPC, nToken, "btn_next_t_event", JsonBool(TRUE)); - // Row 57 - NuiSetBind(oPC, nToken, "middle_title_label", JsonString("Middle")); - // Row 58 - //NuiSetBind(oPC, nToken, "txt_model_number_m_event", JsonBool(TRUE)); - NuiSetBind(oPC, nToken, "txt_model_number_m", JsonString(sModelMiddle)); - NuiSetBind(oPC, nToken, "btn_prev_m_event", JsonBool(TRUE)); - NuiSetBind(oPC, nToken, "btn_next_m_event", JsonBool(TRUE)); - // Row 59 - NuiSetBind(oPC, nToken, "bottom_title_label", JsonString("Bottom")); - // Row 510 - //NuiSetBind(oPC, nToken, "txt_model_number_b_event", JsonBool(TRUE)); - NuiSetBind(oPC, nToken, "txt_model_number_b", JsonString(sModelBottom)); - NuiSetBind(oPC, nToken, "btn_prev_b_event", JsonBool(TRUE)); - NuiSetBind(oPC, nToken, "btn_next_b_event", JsonBool(TRUE)); - // Row 511 - NuiSetBind(oPC, nToken, "btn_randomize_event", JsonBool(TRUE)); - NuiSetBind(oPC, nToken, "btn_randomize_tooltip", JsonString(" Randomize the selected weapon")); - } - // Armor and clothing - else if(nItem == 0) - { - nSelected = GetArmorModelSelected(oPC); - // These models only have one side so make sure we are not linked. - if (nSelected == ITEM_APPR_ARMOR_MODEL_NECK || - nSelected == ITEM_APPR_ARMOR_MODEL_TORSO || - nSelected == ITEM_APPR_ARMOR_MODEL_BELT || - nSelected == ITEM_APPR_ARMOR_MODEL_PELVIS || - nSelected == ITEM_APPR_ARMOR_MODEL_ROBE) - { - sModelMiddle = IntToString(GetItemAppearance(oItem, ITEM_APPR_TYPE_ARMOR_MODEL, nSelected)); - // Row 55 - NuiSetBind(oPC, nToken, "top_title_label", JsonString("")); - // Row 56 - //NuiSetBind(oPC, nToken, "txt_model_number_t_event", JsonBool(FALSE)); - NuiSetBind(oPC, nToken, "txt_model_name_t", JsonString("")); - NuiSetBind(oPC, nToken, "btn_prev_t_event", JsonBool(FALSE)); - NuiSetBind(oPC, nToken, "btn_next_t_event", JsonBool(FALSE)); - // Row 57 - NuiSetBind(oPC, nToken, "middle_title_label", JsonString("Model")); - // Row 58 - //NuiSetBind(oPC, nToken, "txt_model_number_m_event", JsonBool(TRUE)); - NuiSetBind(oPC, nToken, "txt_model_number_m", JsonString(sModelMiddle)); - NuiSetBind(oPC, nToken, "btn_prev_m_event", JsonBool(TRUE)); - NuiSetBind(oPC, nToken, "btn_next_m_event", JsonBool(TRUE)); - // Row 59 - NuiSetBind(oPC, nToken, "bottom_title_label", JsonString("")); - // Row 510 - //NuiSetBind(oPC, nToken, "txt_model_number_b_event", JsonBool(FALSE)); - NuiSetBind(oPC, nToken, "txt_model_number_b", JsonString("")); - NuiSetBind(oPC, nToken, "btn_prev_b_event", JsonBool(FALSE)); - NuiSetBind(oPC, nToken, "btn_next_b_event", JsonBool(FALSE)); - } - else - { - sModelTop = IntToString(GetItemAppearance(oItem, ITEM_APPR_TYPE_ARMOR_MODEL, nSelected)); - if(nSelected == ITEM_APPR_ARMOR_MODEL_RTHIGH) nSelected--; - else nSelected++; - sModelBottom = IntToString(GetItemAppearance(oItem, ITEM_APPR_TYPE_ARMOR_MODEL, nSelected)); - // Row 55 - NuiSetBind(oPC, nToken, "top_title_label", JsonString("Right")); - // Row 56 - //NuiSetBind(oPC, nToken, "txt_model_number_t_event", JsonBool(TRUE)); - NuiSetBind(oPC, nToken, "txt_model_number_t", JsonString(sModelTop)); - NuiSetBind(oPC, nToken, "btn_prev_t_event", JsonBool(TRUE)); - NuiSetBind(oPC, nToken, "btn_next_t_event", JsonBool(TRUE)); - // Row 57 - NuiSetBind(oPC, nToken, "middle_title_label", JsonString("Right & Left")); - // Row 58 - //NuiSetBind(oPC, nToken, "txt_model_number_m_event", JsonBool(TRUE)); - NuiSetBind(oPC, nToken, "txt_model_number_m", JsonString(sModelTop)); - NuiSetBind(oPC, nToken, "btn_prev_m_event", JsonBool(TRUE)); - NuiSetBind(oPC, nToken, "btn_next_m_event", JsonBool(TRUE)); - // Row 59 - NuiSetBind(oPC, nToken, "bottom_title_label", JsonString("Left")); - // Row 510 - //NuiSetBind(oPC, nToken, "txt_model_number_b_event", JsonBool(TRUE)); - NuiSetBind(oPC, nToken, "txt_model_number_b", JsonString(sModelBottom)); - NuiSetBind(oPC, nToken, "btn_prev_b_event", JsonBool(TRUE)); - NuiSetBind(oPC, nToken, "btn_next_b_event", JsonBool(TRUE)); - } - // Row 511 - NuiSetBind(oPC, nToken, "btn_randomize_event", JsonBool(TRUE)); - NuiSetBind(oPC, nToken, "btn_randomize_tooltip", JsonString(" Randomize the selected armor")); - } - // Shields, Cloaks, and Helmets. - else - { - sModelMiddle = IntToString(GetItemAppearance(oItem, ITEM_APPR_TYPE_SIMPLE_MODEL, 0)); - // Row 55 - NuiSetBind(oPC, nToken, "top_title_label", JsonString("")); - // Row 56 - //NuiSetBind(oPC, nToken, "txt_model_number_t_event", JsonBool(FALSE)); - NuiSetBind(oPC, nToken, "txt_model_number_t", JsonString("")); - NuiSetBind(oPC, nToken, "btn_prev_t_event", JsonBool(FALSE)); - NuiSetBind(oPC, nToken, "btn_next_t_event", JsonBool(FALSE)); - // Row 57 - NuiSetBind(oPC, nToken, "middle_title_label", JsonString("Model")); - // Row 58 - //NuiSetBind(oPC, nToken, "txt_model_number_m_event", JsonBool(TRUE)); - NuiSetBind(oPC, nToken, "txt_model_number_m", JsonString(sModelMiddle)); - NuiSetBind(oPC, nToken, "btn_prev_m_event", JsonBool(TRUE)); - NuiSetBind(oPC, nToken, "btn_next_m_event", JsonBool(TRUE)); - // Row 59 - NuiSetBind(oPC, nToken, "bottom_title_label", JsonString("")); - // Row 510 - //NuiSetBind(oPC, nToken, "txt_model_number_b_event", JsonBool(FALSE)); - NuiSetBind(oPC, nToken, "txt_model_number_b", JsonString("")); - NuiSetBind(oPC, nToken, "btn_prev_b_event", JsonBool(FALSE)); - NuiSetBind(oPC, nToken, "btn_next_b_event", JsonBool(FALSE)); - // Row 511 - NuiSetBind(oPC, nToken, "btn_randomize_event", JsonBool(TRUE)); - NuiSetBind(oPC, nToken, "btn_randomize_tooltip", JsonString(" Randomize the selected item")); - } - // Color Group - if(ai_GetIsWeapon(oItem) || ai_GetIsShield(oItem)) - { - // Need to disable the color widgets. - // Row 511 - NuiSetBind(oPC, nToken, "color_pallet_image", JsonString("gui_pal_tattoo")); - NuiSetBind(oPC, nToken, "color_pallet_image_event", JsonBool(FALSE)); - // Row 512 - Label Part to Color - // Row 5l3 - NuiSetBind(oPC, nToken, "btn_right_part_color_event", JsonBool(FALSE)); - NuiSetBind(oPC, nToken, "btn_all_color_event", JsonBool(FALSE)); - NuiSetBind(oPC, nToken, "btn_left_part_color_event", JsonBool(FALSE)); - // Row 514 - Label Part Color to Reset - // Row 515 - NuiSetBind(oPC, nToken, "btn_right_part_reset_event", JsonBool(FALSE)); - NuiSetBind(oPC, nToken, "btn_all_reset_event", JsonBool(FALSE)); - NuiSetBind(oPC, nToken, "btn_left_part_reset_event", JsonBool(FALSE)); - // Row 516 - Label Material to Color - // Row 517 - NuiSetBind(oPC, nToken, "btn_material_0", JsonBool(FALSE)); - NuiSetBind(oPC, nToken, "btn_material_2", JsonBool(FALSE)); - NuiSetBind(oPC, nToken, "btn_material_4", JsonBool(FALSE)); - // Row 518 - NuiSetBind(oPC, nToken, "btn_material_1", JsonBool(FALSE)); - NuiSetBind(oPC, nToken, "btn_material_3", JsonBool(FALSE)); - NuiSetBind(oPC, nToken, "btn_material_5", JsonBool(FALSE)); - SetMaterialButtons(oPC, nToken, -1); - } - // Armor and clothing - else if(nItem == 0) - { - // Row 511 - string sColorPallet = GetLocalString(oPC, CRAFT_COLOR_PALLET); - if(sColorPallet == "") sColorPallet = "gui_pal_tattoo"; - int nMaterialSelected = JsonGetInt(JsonObjectGet(jCraft, CRAFT_MATERIAL_SELECTION)); - int nModelSelected = GetArmorModelSelected(oPC); - // Row 511 - NuiSetBind(oPC, nToken, "color_pallet_image", JsonString(sColorPallet)); - NuiSetBind(oPC, nToken, "color_pallet_event", JsonBool(TRUE)); - NuiSetBind(oPC, nToken, "color_pallet_tooltip", JsonString(" Select a color or use the mouse wheel")); - int nSelectedRight, nSelectedAll, nSelectedLeft; - string sColorAll = IntToString(GetItemAppearance(oItem, ITEM_APPR_TYPE_ARMOR_COLOR, nMaterialSelected)); - // These models only have one side so make sure we are not linked. - if (nModelSelected == ITEM_APPR_ARMOR_MODEL_NECK || - nModelSelected == ITEM_APPR_ARMOR_MODEL_TORSO || - nModelSelected == ITEM_APPR_ARMOR_MODEL_BELT || - nModelSelected == ITEM_APPR_ARMOR_MODEL_PELVIS || - nModelSelected == ITEM_APPR_ARMOR_MODEL_ROBE) - { - // Row 512 - Label Part to Color - // Row 5l3 - int nPartColor = GetHasPartColor(oItem, nModelSelected, "Right"); - nSelectedRight = JsonGetInt(JsonObjectGet(jCraft, CRAFT_RIGHT_PART_COLOR)); - if(!nSelectedRight && nPartColor) - { - nSelectedRight = TRUE; - nSelectedLeft = FALSE; - } - nSelectedAll = !nSelectedRight; - jCraft = JsonObjectSet(jCraft, CRAFT_ALL_COLOR, JsonBool(nSelectedAll)); - jCraft = JsonObjectSet(jCraft, CRAFT_RIGHT_PART_COLOR, JsonBool(nSelectedRight)); - NuiSetBind(oPC, nToken, "btn_right_part_color", JsonBool(nSelectedRight)); - NuiSetBind(oPC, nToken, "btn_right_part_color_event", JsonBool(TRUE)); - NuiSetBind(oPC, nToken, "btn_all_color", JsonBool(nSelectedAll)); - NuiSetBind(oPC, nToken, "btn_all_color_event", JsonBool(TRUE)); - NuiSetBind(oPC, nToken, "btn_left_part_color", JsonBool(FALSE)); - NuiSetBind(oPC, nToken, "btn_left_part_color_event", JsonBool(FALSE)); - // Row 514 - Label Part Color to Reset - // Row 5l5 - nSelectedRight = GetHasPartColor(oItem, nModelSelected, "Right"); - nSelectedAll = nSelectedRight; - NuiSetBind(oPC, nToken, "btn_right_part_reset_event", JsonBool(nSelectedRight)); - NuiSetBind(oPC, nToken, "btn_all_reset_event", JsonBool(nSelectedAll)); - NuiSetBind(oPC, nToken, "btn_left_part_reset_event", JsonBool(FALSE)); - } - else - { - // Row 512 - Label Part to Color - // Row 5l3 - int nPartColor = GetHasPartColor(oItem, nModelSelected, "Right"); - nSelectedRight = JsonGetInt(JsonObjectGet(jCraft, CRAFT_RIGHT_PART_COLOR)); - if(!nSelectedRight && nPartColor) - { - nSelectedRight = TRUE; - nSelectedLeft = FALSE; - } - else - { - nPartColor = GetHasPartColor(oItem, nModelSelected, "Left"); - nSelectedLeft = JsonGetInt(JsonObjectGet(jCraft, CRAFT_LEFT_PART_COLOR)); - if(!nSelectedLeft && nPartColor) - { - nSelectedLeft = TRUE; - nSelectedRight = FALSE; - } - } - nSelectedAll = !nSelectedRight && !nSelectedLeft; - jCraft = JsonObjectSet(jCraft, CRAFT_LEFT_PART_COLOR, JsonBool(nSelectedLeft)); - jCraft = JsonObjectSet(jCraft, CRAFT_ALL_COLOR, JsonBool(nSelectedAll)); - jCraft = JsonObjectSet(jCraft, CRAFT_RIGHT_PART_COLOR, JsonBool(nSelectedRight)); - NuiSetBind(oPC, nToken, "btn_right_part_color", JsonBool(nSelectedRight)); - NuiSetBind(oPC, nToken, "btn_right_part_color_event", JsonBool(TRUE)); - NuiSetBind(oPC, nToken, "btn_all_color", JsonBool(nSelectedAll)); - NuiSetBind(oPC, nToken, "btn_all_color_event", JsonBool(TRUE)); - NuiSetBind(oPC, nToken, "btn_left_part_color", JsonBool(nSelectedLeft)); - NuiSetBind(oPC, nToken, "btn_left_part_color_event", JsonBool(TRUE)); - // Row 514 - Label Part Color to Reset - // Row 5l5 - nSelectedRight = GetHasPartColor(oItem, nModelSelected, "Right"); - nSelectedLeft = GetHasPartColor(oItem, nModelSelected, "Left"); - nSelectedAll = nSelectedRight || nSelectedLeft; - NuiSetBind(oPC, nToken, "btn_right_part_reset_event", JsonBool(nSelectedRight)); - NuiSetBind(oPC, nToken, "btn_all_reset_event", JsonBool(nSelectedAll)); - NuiSetBind(oPC, nToken, "btn_left_part_reset_event", JsonBool(nSelectedLeft)); - } - int nColor; - if(!JsonGetInt(NuiGetBind(oPC, nToken, "btn_all_color"))) - { - int nModelSelected = GetArmorModelSelected(oPC); - if(!JsonGetInt(JsonObjectGet(jCraft, CRAFT_RIGHT_PART_COLOR))) - { - // Note: Right Thigh and Left Thigh are backwards so this fixes that! - if (nModelSelected == ITEM_APPR_ARMOR_MODEL_RTHIGH) nModelSelected--; - else nModelSelected++; - } - int nIndex = ITEM_APPR_ARMOR_NUM_COLORS + (nModelSelected * ITEM_APPR_ARMOR_NUM_COLORS) + nMaterialSelected; - nColor = GetItemAppearance(oItem, ITEM_APPR_TYPE_ARMOR_COLOR, nIndex); - } - else nColor = 255; - if(nColor == 255) nColor = GetItemAppearance(oItem, ITEM_APPR_TYPE_ARMOR_COLOR, nMaterialSelected); - float fPointX = IntToFloat((nColor - ((nColor / 16) * 16)) * 20); - float fPointY = IntToFloat((nColor / 16) * 20); - NuiSetBind(oPC, nToken, "color_pallet_pointer", NuiRect(fPointX, fPointY, 20.0, 20.0)); - // Row 516 - Label Material to Color - // Row 517 & 518 - NuiSetBind(oPC, nToken, "btn_right_part_color_tooltip", JsonString(" Select the right part to be uniquely colored")); - NuiSetBind(oPC, nToken, "btn_all_color_tooltip", JsonString(" Select all parts to be colored")); - NuiSetBind(oPC, nToken, "btn_left_part_color_tooltip", JsonString(" Select the left part to be uniquely colored")); - NuiSetBind(oPC, nToken, "btn_right_part_reset_tooltip", JsonString(" Clears the right part's unique color")); - NuiSetBind(oPC, nToken, "btn_all_reset_tooltip", JsonString(" Clears all parts unique colors")); - NuiSetBind(oPC, nToken, "btn_left_part_reset_tooltip", JsonString(" Clears the left part's unique color")); - nSelected = JsonGetInt(JsonObjectGet(jCraft, CRAFT_MATERIAL_SELECTION)); - SetMaterialButtons(oPC, nToken, nSelected); - SetLocalJson(oPC, CRAFT_JSON, jCraft); - } - // Cloaks and Helmets. - else - { - // Row 511 - string sColorPallet = GetLocalString(oPC, CRAFT_COLOR_PALLET); - if(sColorPallet == "") sColorPallet = "gui_pal_tattoo"; - int nMaterialSelected = JsonGetInt(JsonObjectGet(jCraft, CRAFT_MATERIAL_SELECTION)); - int nModelSelected = JsonGetInt(JsonObjectGet(jCraft, CRAFT_MODEL_SELECTION)); - int nColor = GetItemAppearance(oItem, ITEM_APPR_TYPE_ARMOR_COLOR, nMaterialSelected); - float fPointX = IntToFloat((nColor - ((nColor / 16) * 16)) * 20); - float fPointY = IntToFloat((nColor / 16) * 20); - NuiSetBind(oPC, nToken, "color_pallet_pointer", NuiRect(fPointX, fPointY, 20.0, 20.0)); - NuiSetBind(oPC, nToken, "color_pallet_image", JsonString(sColorPallet)); - NuiSetBind(oPC, nToken, "color_pallet_event", JsonBool(TRUE)); - NuiSetBind(oPC, nToken, "color_pallet_tooltip", JsonString(" Select a color or use the mouse wheel")); - // Row 512 - Label Part to Color - // Row 5l3 - NuiSetBind(oPC, nToken, "btn_right_part_color_event", JsonBool(FALSE)); - NuiSetBind(oPC, nToken, "btn_right_part_color_event", JsonBool(FALSE)); - NuiSetBind(oPC, nToken, "btn_all_color_event", JsonBool(TRUE)); - NuiSetBind(oPC, nToken, "btn_all_color", JsonBool(TRUE)); - NuiSetBind(oPC, nToken, "btn_left_part_color_event", JsonBool(FALSE)); - NuiSetBind(oPC, nToken, "btn_left_part_color", JsonBool(FALSE)); - // Row 514 - Label Part Color to Reset - // Row 5l5 - NuiSetBind(oPC, nToken, "btn_right_part_reset_event", JsonBool(FALSE)); - //NuiSetBind(oPC, nToken, "btn_all_reset_event", JsonBool(FALSE)); - NuiSetBind(oPC, nToken, "btn_left_part_reset_event", JsonBool(FALSE)); - // Row 516 - Label Material to Color - // Row 517 & 518 - nSelected = JsonGetInt(JsonObjectGet(jCraft, CRAFT_MATERIAL_SELECTION)); - SetMaterialButtons(oPC, nToken, nSelected); - } - // Lets make sure we clean up any cool down variables. - //DeleteLocalInt(oPC, CRAFT_COOL_DOWN); -} -json CreateItemCombo(object oPC, json jRow, string sComboBind) -{ - int nCnt; - // Create the list. - json jCombo = JsonArrayInsert(JsonArray(), NuiComboEntry("Armor", 0)); - jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Cloak", 1)); - jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Headgear", 2)); - jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Right hand", 3)); - jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Left hand", 4)); - return CreateCombo(jRow, jCombo, sComboBind, 128.0, 40.0); -} -json CreateModelCombo(object oPC, object oTarget, json jRow, string sComboBind) -{ - float fFacing = GetFacing(oTarget); - json jCombo, jCraft = GetLocalJson(oPC, CRAFT_JSON); - int nSelected = JsonGetInt(JsonObjectGet(jCraft, CRAFT_ITEM_SELECTION)); - // Create the list. - // Armor. - if(nSelected == 0) - { - fFacing += 180.0f; - if (fFacing > 359.0) fFacing -=359.0; - AssignCommand(oPC, SetCameraFacing(fFacing, 4.5f, 75.0, CAMERA_TRANSITION_TYPE_VERY_FAST)); - jCombo = JsonArrayInsert(JsonArray(), NuiComboEntry("Neck", 0)); - jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Shoulder", 1)); - jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Bicep", 2)); - jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Forearm", 3)); - jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Hand", 4)); - jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Torso", 5)); - jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Belt", 6)); - jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Pelvis", 7)); - jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Thigh", 8)); - jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Shin", 9)); - jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Foot", 10)); - jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Robe", 11)); - } - // Cloak. - else if(nSelected == 1) - { - if(fFacing > 359.0) fFacing -=359.0; - AssignCommand (oPC, SetCameraFacing(fFacing, 4.5f, 75.0, CAMERA_TRANSITION_TYPE_VERY_FAST)); - jCombo = JsonArrayInsert(JsonArray(), NuiComboEntry("Cloak", 0)); - jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Invisible", 1)); - } - // Headgear. - else if (nSelected == 2) - { - fFacing += 180.0f; - if(fFacing > 359.0) fFacing -=359.0; - AssignCommand(oPC, SetCameraFacing(fFacing, 2.5f, 75.0, CAMERA_TRANSITION_TYPE_VERY_FAST)); - jCombo = JsonArrayInsert(JsonArray(), NuiComboEntry("Headgear", 0)); - jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Invisible", 1)); - } - // Weapon. - else if (nSelected == 3) - { - // If they are changing a bow then face the opposite side. - object oItem = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC); - int nBaseItemType = GetBaseItemType(oItem); - if(nBaseItemType == BASE_ITEM_LONGBOW || nBaseItemType == BASE_ITEM_SHORTBOW) fFacing -= 90.00; - // This will make the camera face a melee weapon. - else fFacing += 90.0; - if(fFacing > 359.0) fFacing -=359.0; - AssignCommand(oPC, SetCameraFacing(fFacing, 3.5f, 75.0, CAMERA_TRANSITION_TYPE_VERY_FAST)); - jCombo = JsonArrayInsert(JsonArray(), NuiComboEntry("Weapon", 0)); - jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Acidic", 1)); - jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Frost", 2)); - jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Electric", 3)); - jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Unholy", 4)); - jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Flaming", 5)); - jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Holy", 6)); - jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Sonic", 7)); -} - // Weapon/Shield. - else if(nSelected == 4) - { - fFacing += 270.0f; - if(fFacing > 359.0) fFacing -=359.0; - AssignCommand(oPC, SetCameraFacing(fFacing, 3.5f, 75.0, CAMERA_TRANSITION_TYPE_VERY_FAST)); - object oItem = GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC); - if(ai_GetIsShield(oItem)) - { - jCombo = JsonArrayInsert(JsonArray(), NuiComboEntry("Shield", 0)); - jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Invisible", 1)); - } - else - { - jCombo = JsonArrayInsert(JsonArray(), NuiComboEntry("Weapon", 0)); - jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Acidic", 1)); - jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Frost", 2)); - jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Electric", 3)); - jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Unholy", 4)); - jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Flaming", 5)); - jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Holy", 6)); - jCombo = JsonArrayInsert(jCombo, NuiComboEntry("Sonic", 7)); - } - } - return CreateCombo(jRow, jCombo, sComboBind, 128.0, 40.0); -} -void SetMaterialButtons(object oPC, int nToken, int nMaterial) -{ - int nIndex, bBool, bUseable; - string sIndex; - if(nMaterial > -1) bUseable = TRUE; - for(nIndex = 0;nIndex < 6;nIndex++) - { - if(nIndex == nMaterial) bBool = TRUE; - else bBool = FALSE; - sIndex = IntToString(nIndex); - NuiSetBind(oPC, nToken, "btn_material_" + sIndex + "_event", JsonBool(bUseable)); - NuiSetBind(oPC, nToken, "btn_material_" + sIndex, JsonBool(bBool)); - } -} -object GetSelectedItem(object oTarget, int nItemSelected) -{ - if(nItemSelected == 0) return GetItemInSlot(INVENTORY_SLOT_CHEST, oTarget); - else if(nItemSelected == 1) return GetItemInSlot(INVENTORY_SLOT_CLOAK, oTarget); - else if(nItemSelected == 2) return GetItemInSlot(INVENTORY_SLOT_HEAD, oTarget); - else if(nItemSelected == 3) return GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oTarget); - else if(nItemSelected == 4) return GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oTarget); - return OBJECT_INVALID; -} -int GetArmorModelSelected(object oPC) -{ - json jCraft = GetLocalJson(oPC, CRAFT_JSON); - int nModelSelected = JsonGetInt(JsonObjectGet(jCraft, CRAFT_MODEL_SELECTION)); - if(nModelSelected == 0) return ITEM_APPR_ARMOR_MODEL_NECK; - if(nModelSelected == 1) return ITEM_APPR_ARMOR_MODEL_RSHOULDER; - if(nModelSelected == 2) return ITEM_APPR_ARMOR_MODEL_RBICEP; - if(nModelSelected == 3) return ITEM_APPR_ARMOR_MODEL_RFOREARM; - if(nModelSelected == 4) return ITEM_APPR_ARMOR_MODEL_RHAND; - if(nModelSelected == 5) return ITEM_APPR_ARMOR_MODEL_TORSO; - if(nModelSelected == 6) return ITEM_APPR_ARMOR_MODEL_BELT; - if(nModelSelected == 7) return ITEM_APPR_ARMOR_MODEL_PELVIS; - if(nModelSelected == 8) return ITEM_APPR_ARMOR_MODEL_RTHIGH; - if(nModelSelected == 9) return ITEM_APPR_ARMOR_MODEL_RSHIN; - if(nModelSelected == 10) return ITEM_APPR_ARMOR_MODEL_RFOOT; - return ITEM_APPR_ARMOR_MODEL_ROBE; -} -int GetHasPartColor(object oItem, int nPart, string sSide) -{ - json jItem = ObjectToJson(oItem); - string sPartName = "APart_"; - if(sSide == "Left") - { - // Note: Right Thigh and Left Thigh are backwards so this fixes that! - if (nPart == ITEM_APPR_ARMOR_MODEL_RTHIGH) nPart--; - else nPart++; - } - sPartName += IntToString(nPart) + "_Col_"; - int nPartColor = JsonGetInt(GffGetByte(jItem, sPartName + "0")); - nPartColor += JsonGetInt(GffGetByte(jItem, sPartName + "1")); - nPartColor += JsonGetInt(GffGetByte(jItem, sPartName + "2")); - nPartColor += JsonGetInt(GffGetByte(jItem, sPartName + "3")); - nPartColor += JsonGetInt(GffGetByte(jItem, sPartName + "4")); - nPartColor += JsonGetInt(GffGetByte(jItem, sPartName + "5")); - return nPartColor; + // Set this variable on the player so PEPS can run the targeting script for this plugin. + SetLocalString(oPC, AI_PLUGIN_TARGET_SCRIPT, "pe_crafting"); + // Set Targeting variables. + SetLocalString(oPC, AI_TARGET_MODE, "SELECT_TARGET"); + ai_SendMessages("Select your charcter, a henchman or an item possessed by one.", AI_COLOR_YELLOW, oPC); + EnterTargetingMode(oPC, OBJECT_TYPE_CREATURE | OBJECT_TYPE_ITEM , MOUSECURSOR_EXAMINE, MOUSECURSOR_NOEXAMINE); + } int StartingUp(object oPC) { diff --git a/_module/nss/pi_debug.nss b/_module/nss/pi_debug.nss index 6555882..506b6e7 100644 --- a/_module/nss/pi_debug.nss +++ b/_module/nss/pi_debug.nss @@ -16,7 +16,7 @@ void main() //SetLocalInt (oPC, AI_NO_NUI_SAVE, TRUE); //DelayCommand (0.5f, DeleteLocalInt (oPC, AI_NO_NUI_SAVE)); string sText = " [Single player]"; - if(AI_SERVER) sText = " [Server]"; + if(ai_GetIsServer()) sText = " [Server]"; // ************************************************************************* Width / Height // Row 1 ******************************************************************* 500 / 73 json jRow = JsonArrayInsert(JsonArray(), NuiSpacer()); @@ -30,25 +30,31 @@ void main() // Add row to the column. jCol = JsonArrayInsert(jCol, NuiRow(jRow)); // Row 3 ******************************************************************* 500 / 101 - sText = "Monster AI (nw_c2_default1): " + ResManGetAliasFor("nw_c2_default1", RESTYPE_NCS); - jRow = CreateLabel(JsonArray(), sText, "monster_1_ai", 470.0f, 20.0f, NUI_HALIGN_CENTER); - // Add row to the column. - jCol = JsonArrayInsert(jCol, NuiRow(jRow)); + sText = ResManGetAliasFor("nw_c2_default1", RESTYPE_NCS); + if(sText != "") + { + jRow = CreateLabel(JsonArray(), "Monster AI (nw_c2_default1): " + sText, "monster_1_ai", 470.0f, 20.0f); + jCol = JsonArrayInsert(jCol, NuiRow(jRow)); + } // Row 4 ******************************************************************* 500 / 157 - sText = "Monster AI (j_ai_onheartbeat): " + ResManGetAliasFor("j_ai_onheartbeat", RESTYPE_NCS); - jRow = CreateLabel(JsonArray(), sText, "monster_2_ai", 470.0f, 20.0f, NUI_HALIGN_CENTER); - // Add row to the column. - jCol = JsonArrayInsert(jCol, NuiRow(jRow)); + sText = ResManGetAliasFor("j_ai_onheartbeat", RESTYPE_NCS); + if(sText != "") + { + jRow = CreateLabel(JsonArray(), "Monster AI (j_ai_onheartbeat): " + sText, "monster_2_ai", 470.0f, 20.0f); + jCol = JsonArrayInsert(jCol, NuiRow(jRow)); + } // Row 5 ******************************************************************* 500 / 213 - sText = "Associate AI (nw_ch_ac1): " + ResManGetAliasFor("nw_ch_ac1", RESTYPE_NCS); - jRow = CreateLabel(JsonArray(), sText, "henchman_ai", 470.0f, 20.0f, NUI_HALIGN_CENTER); - // Add row to the column. - jCol = JsonArrayInsert(jCol, NuiRow(jRow)); + sText = ResManGetAliasFor("nw_ch_ac1", RESTYPE_NCS); + if(sText != "") + { + jRow = CreateLabel(JsonArray(), "Associate AI (nw_ch_ac1): " + sText, "henchman_ai", 470.0f, 20.0f); + jCol = JsonArrayInsert(jCol, NuiRow(jRow)); + } // Row 6 ******************************************************************* 500 / 241 jRow = JsonArrayInsert(JsonArray(), NuiSpacer()); jRow = CreateButton(jRow, "Set NPC's scripts", "btn_npc_scripts", 150.0f, 20.0f, -1.0, "btn_npc_scripts_tooltip"); jRow = JsonArrayInsert(jRow, NuiSpacer()); - jRow = CreateButton(jRow, "Set Reputations", "btn_set_reputation", 150.0f, 20.0f, -1.0, "btn_set_reputation_tooltip"); + jRow = CreateButton(jRow, "Set Commandable", "btn_set_commandable", 150.0f, 20.0f, -1.0, "btn_set_commandable_tooltip"); jRow = JsonArrayInsert(jRow, NuiSpacer()); jRow = CreateButton(jRow, "Clear Party Rep.", "btn_clear_reputation", 150.0f, 20.0f, -1.0, "btn_clear_reputation_tooltip"); jRow = JsonArrayInsert(jRow, NuiSpacer()); @@ -146,8 +152,8 @@ void main() // Row 6 NuiSetBind(oPC, nToken, "btn_npc_scripts_event", JsonBool(TRUE)); NuiSetBind(oPC, nToken, "btn_npc_scripts_tooltip", JsonString(" Forces NPC to use Philos AI scripts!")); - NuiSetBind(oPC, nToken, "btn_set_reputation_event", JsonBool(TRUE)); - NuiSetBind(oPC, nToken, "btn_set_reputation_tooltip", JsonString(" Sets a creatures faction to neutral for all standard factions.")); + NuiSetBind(oPC, nToken, "btn_set_commandable_event", JsonBool(TRUE)); + NuiSetBind(oPC, nToken, "btn_set_commandable_tooltip", JsonString(" Sets a creatures to commandable.")); NuiSetBind(oPC, nToken, "btn_clear_reputation_event", JsonBool(TRUE)); NuiSetBind(oPC, nToken, "btn_clear_reputation_tooltip", JsonString(" Clears the party's reputation with creature's faction.")); // Row 7 diff --git a/_module/nss/pinc_henchmen.nss b/_module/nss/pinc_henchmen.nss index a65adf4..d5f72de 100644 --- a/_module/nss/pinc_henchmen.nss +++ b/_module/nss/pinc_henchmen.nss @@ -369,11 +369,12 @@ void RemoveYourHenchman(object oPC, int nToken, string sParty) else { RemoveHenchman(oPC, oHenchman); + ChangeToStandardFaction(oHenchman, STANDARD_FACTION_DEFENDER); AssignCommand(oHenchman, SetIsDestroyable(TRUE, FALSE, FALSE)); NuiDestroy(oPC, NuiFindWindow(oPC, ai_GetAssociateType(oPC, oHenchman) + AI_WIDGET_NUI)); DestroyObject(oHenchman); + ai_SendMessages(GetName(oHenchman) + " has been removed from the party!", AI_COLOR_GREEN, oPC); } - ai_SendMessages(GetName(oHenchman) + " has been removed from the party!", AI_COLOR_GREEN, oPC); NuiDestroy(oPC, nToken); ExecuteScript("pi_henchmen", oPC); } @@ -388,6 +389,7 @@ void RemoveWholeParty(object oPC, int nToken, string sParty) { ai_SendMessages(GetName(oHenchman) + " has been remove from your Party.", AI_COLOR_YELLOW, oPC); RemoveHenchman(oPC, oHenchman); + ChangeToStandardFaction(oHenchman, STANDARD_FACTION_DEFENDER); AssignCommand(oHenchman, SetIsDestroyable(TRUE, FALSE, FALSE)); NuiDestroy(oPC, NuiFindWindow(oPC, ai_GetAssociateType(oPC, oHenchman) + AI_WIDGET_NUI)); DestroyObject(oHenchman); @@ -426,10 +428,20 @@ void SaveYourHenchman(object oPC, int nToken, string sParty) ChangeToStandardFaction(oHenchman, STANDARD_FACTION_DEFENDER); json jHenchman = ObjectToJson(oHenchman, TRUE); if(!bPC) AddHenchman(oPC, oHenchman); - else DestroyObject(oHenchman); - //string sPatch = "[{\"op\":\"replace\",\"path\":\"/FactionID/value\",\"value\":1}]"; - //json jPatch = JsonParse(sPatch); - //jHenchman = JsonPatch(jHenchman, jPatch); + else + { + DestroyObject(oHenchman); + // We need to make sure the henchman is not seen as a PC or DM! + jHenchman = GffReplaceByte(jHenchman, "IsPC", 0); + jHenchman = GffReplaceByte(jHenchman, "IsDM", 0); + // Rename them with a number added to the end, helps tell the + // difference between the PC and the new henchman. + string sNameIndex, sLastName = JsonGetString(GffGetLocString(jHenchman, "LastName")); + int nNameIndex = StringToInt(GetStringRight(sLastName, 1)); + if(nNameIndex > 0) GetStringLeft(sLastName, GetStringLength(sLastName) -1) + IntToString(nNameIndex++); + else sNameIndex = "_1"; + jHenchman = GffReplaceLocString(jHenchman, "LastName", sLastName + "_"); + } CheckHenchmanDataAndInitialize(oPC, sSlot); SetHenchmanDbString(oPC, "image", GetPortraitResRef(oHenchman), sSlot); SetHenchmanDbString(oPC, "henchname", sHenchmanName, sSlot); @@ -450,15 +462,13 @@ void SaveYourHenchman(object oPC, int nToken, string sParty) SetHenchmanDbString(oPC, "stats", sStats, sSlot); SetHenchmanDbString(oPC, "classes", sClasses, sSlot); SetHenchmanDbJson(oPC, "henchman", jHenchman, sSlot); - if(sName == "") ai_SendMessages(sHenchmanName + " has been saved to the party.", AI_COLOR_GREEN, oPC); - else ai_SendMessages(sHenchmanName + " has replaced a copy of themselves in the party.", AI_COLOR_GREEN, oPC); + if(sName == "") ai_SendMessages(sHenchmanName + " has been saved to the party " + sParty + ".", AI_COLOR_GREEN, oPC); + else ai_SendMessages(sHenchmanName + " has replaced a copy of themselves in the party " + sParty + ".", AI_COLOR_GREEN, oPC); break; } nIndex++; } -if(nIndex == nMaxHenchman) ai_SendMessages("This party is full!", AI_COLOR_RED, oPC); - NuiDestroy(oPC, nToken); - ExecuteScript("pi_henchmen", oPC); + if(nIndex == nMaxHenchman) ai_SendMessages("This party is full!", AI_COLOR_RED, oPC); } void SaveWholeParty(object oPC, int nToken, string sParty) { @@ -672,11 +682,8 @@ int GetSelectionByPackage2DA(string sClass, int nPackage) if(Get2DAString("packages", "ClassID", nIndex) == sClass) { sPackageName = GetStringByStrRef(StringToInt(Get2DAString("packages", "Name", nIndex))); - if(sPackageName != "Bad Strref" && sPackageName != "") - { - if(nPackage == nIndex) return nSelection; - nSelection++; - } + if(nPackage == nIndex) return nSelection; + nSelection++; } nIndex++; } @@ -814,10 +821,25 @@ json CreateLevelStatList(json jHenchman, object oHenchman, object oPC, int nLeve { jLevelArray = JsonArrayInsert(jLevelArray, jLevel); } - WriteTimestampedLogEntry("pinc_henchmen, 813, Creating LvlStatList for " + GetName(oHenchman)); + //WriteTimestampedLogEntry("pinc_henchmen, 813, Creating LvlStatList for " + GetName(oHenchman)); return GffAddList(jHenchman, "LvlStatList", jLevelArray); } -int CanSelectFeat(json jCreature, object oCreature, int nFeat, int nPosition = 1) +int GetHasJFeat(int nFeat, json jFeatList) +{ + int nIndex, nJFeat, nMaxFeats = JsonGetLength(jFeatList); + json jFeat; + //WriteTimestampedLogEntry("pinc_henchmen, 831, nFeat: " + IntToString(nFeat) + " nMaxFeats: " + IntToString(nMaxFeats) + "."); + while(nIndex < nMaxFeats) + { + jFeat = JsonArrayGet(jFeatList, nIndex); + nJFeat = JsonGetInt(GffGetWord(jFeat, "Feat")); + //WriteTimestampedLogEntry("pinc_henchmen, 831, nJFeat: " + IntToString(nJFeat) + "."); + if(nJFeat == nFeat) return TRUE; + nIndex++; + } + return FALSE; +} +int CanSelectFeat(json jCreature, object oCreature, int nFeat, json jFeats, int nPosition = 1) { // Check if all classes can use. int n2DAStat = StringToInt(Get2DAString("feat", "ALLCLASSESCANUSE", nFeat)); @@ -855,28 +877,30 @@ int CanSelectFeat(json jCreature, object oCreature, int nFeat, int nPosition = 1 n2DAStat = StringToInt(Get2DAString("feat", "MINSPELLLVL", nFeat)); int nSpellLevel = 0, nClass = GetClassByPosition(nPosition, oCreature); string s2DAName = Get2DAString("classes", "SpellGainTable", nClass); - int nLevel = GetLevelByPosition(nPosition, oCreature); if(s2DAName != "") { + int nLevel = GetLevelByPosition(nPosition, oCreature); nSpellLevel = StringToInt(Get2DAString(s2DAName, "NumSpellLevels", nLevel - 1)) - 1; + if(nSpellLevel < 0) nSpellLevel = 0; } if(nSpellLevel < n2DAStat) return FALSE; n2DAStat = StringToInt(Get2DAString("feat", "PREREQFEAT1", nFeat)); - if(n2DAStat > 0) + if(n2DAStat > 0 && GetHasJFeat(n2DAStat, jFeats)) { - // ************************************** Add code to search jCreature's feats! - if(!GetHasFeat(n2DAStat, oCreature)) return FALSE; n2DAStat = StringToInt(Get2DAString("feat", "PREREQFEAT2", nFeat)); - if(!GetHasFeat(n2DAStat, oCreature)) return FALSE; + if(n2DAStat > 0 && !GetHasJFeat(n2DAStat, jFeats)) return FALSE; } int nIndex; while(nIndex < 5) { n2DAStat = StringToInt(Get2DAString("feat", "OrReqFeat" + IntToString(nIndex), nFeat)); if(nIndex == 0 && n2DAStat == 0) break; - if(GetHasFeat(n2DAStat, oCreature)) break; - nIndex++; - if(nIndex == 5) return FALSE; + if(n2DAStat > 0) + { + if(GetHasJFeat(n2DAStat, jFeats)) break; + } + else return FALSE; + ++nIndex; } string s2DAStat = Get2DAString("feat", "REQSKILL", nFeat); if(s2DAStat != "") @@ -969,7 +993,7 @@ json ResetFeats(json jHenchman, object oHenchman) int nRace = GetRacialType(oHenchman); string sRace2DAName = Get2DAString("racialtypes", "FeatsTable", nRace); // Give racial feats. - WriteTimestampedLogEntry("pinc_henchmen, 972, Checking for racial feats."); + WriteTimestampedLogEntry("pinc_henchmen, 996, Checking for racial feats."); int nRaceRow, nRaceFeat; int nRaceMaxRow = Get2DARowCount(sRace2DAName); while(nRaceRow < nRaceMaxRow) @@ -979,12 +1003,12 @@ json ResetFeats(json jHenchman, object oHenchman) jFeat = GffAddWord(jFeat, "Feat", nRaceFeat); jFeat = JsonObjectSet(jFeat, "__struct_id", JsonInt(1)); jFeatList = JsonArrayInsert(jFeatList, jFeat); - WriteTimestampedLogEntry("pinc_henchmen, 982, Adding racial feat: " + + WriteTimestampedLogEntry("pinc_henchmen, 999, Adding racial feat: " + Get2DAString("feat", "LABEL", nRaceFeat)); nRaceRow++; } // Give class feats. - WriteTimestampedLogEntry("pinc_henchmen, 972, Checking for class feats."); + WriteTimestampedLogEntry("pinc_henchmen, 1004, Checking for class feats."); int nClass = GetClassByPosition(1, oHenchman); string sGranted, sList; string sClsFeat2DAName = Get2DAString("classes", "FeatsTable", nClass); @@ -1002,17 +1026,17 @@ json ResetFeats(json jHenchman, object oHenchman) jFeat = GffAddWord(jFeat, "Feat", nClassFeat); jFeat = JsonObjectSet(jFeat, "__struct_id", JsonInt(1)); jFeatList = JsonArrayInsert(jFeatList, jFeat); - WriteTimestampedLogEntry("pinc_henchmen, 1005, Adding class feat: " + + WriteTimestampedLogEntry("pinc_henchmen, 1022, Adding class feat: " + Get2DAString("feat", "LABEL", nClassFeat)); } } nClassRow++; } // Give any bonus feats from package. - WriteTimestampedLogEntry("pinc_henchmen, 1012, Checking for selectable feats."); int nPackageFeat, nPackageRow; string sBonusFeat2DAName = Get2DAString("classes", "BonusFeatsTable", nClass); int nNumOfFeats = StringToInt(Get2DAString(sBonusFeat2DAName, "Bonus", nLevel)); + WriteTimestampedLogEntry("pinc_henchmen, 1032, Select " + IntToString(nNumOfFeats) + " bonus feats."); string sPackage2DAName = Get2DAString("packages", "FeatPref2DA", nClass); int nPackageMaxRow = Get2DARowCount(sPackage2DAName); // Give bonus feats based on the package. @@ -1029,13 +1053,13 @@ json ResetFeats(json jHenchman, object oHenchman) if(nClassFeat == nPackageFeat) { sList = Get2DAString(sClsFeat2DAName, "List", nClassRow); - if((sList == "1" || sList == "2") && CanSelectFeat(jHenchman, oHenchman, nClassFeat)) + if((sList == "1" || sList == "2") && CanSelectFeat(jHenchman, oHenchman, nClassFeat, jFeatList)) { jFeat = JsonObject(); jFeat = GffAddWord(jFeat, "Feat", nClassFeat); jFeat = JsonObjectSet(jFeat, "__struct_id", JsonInt(1)); jFeatList = JsonArrayInsert(jFeatList, jFeat); - WriteTimestampedLogEntry("pinc_henchmen, 1028, Adding class bonus feat: " + + WriteTimestampedLogEntry("pinc_henchmen, 1055, Adding class bonus feat: " + Get2DAString("feat", "LABEL", nPackageFeat)); nNumOfFeats--; } @@ -1047,44 +1071,46 @@ json ResetFeats(json jHenchman, object oHenchman) } } // Give picked feats from package. - WriteTimestampedLogEntry("pinc_henchmen, 972, Checking for select feats."); nNumOfFeats = 1; if(GetHasFeat(FEAT_QUICK_TO_MASTER, oHenchman)) nNumOfFeats++; + WriteTimestampedLogEntry("pinc_henchmen, 1069, Select " + IntToString(nNumOfFeats) + " feats for character."); nPackageRow = 0; - while(nPackageRow < nPackageMaxRow || nNumOfFeats > 0) + while(nPackageRow < nPackageMaxRow) { nClassRow = 0; nPackageFeat = StringToInt(Get2DAString(sPackage2DAName, "FeatIndex", nPackageRow)); - if(CanSelectFeat(jHenchman, oHenchman, nPackageFeat)) + //WriteTimestampedLogEntry("pinc_henchmen, 1075, nPackageFeat: " + Get2DAString("feat", "LABEL", nPackageFeat) + "."); + if(CanSelectFeat(jHenchman, oHenchman, nPackageFeat, jFeatList)) { jFeat = JsonObject(); jFeat = GffAddWord(jFeat, "Feat", nPackageFeat); jFeat = JsonObjectSet(jFeat, "__struct_id", JsonInt(1)); jFeatList = JsonArrayInsert(jFeatList, jFeat); - WriteTimestampedLogEntry("pinc_henchmen, 1053, Adding character bonus feat: " + + WriteTimestampedLogEntry("pinc_henchmen, 1082, Selecting character feat: " + Get2DAString("feat", "LABEL", nPackageFeat)); nNumOfFeats--; } if(nNumOfFeats < 1) break; nPackageRow++; } - WriteTimestampedLogEntry("pinc_henchmen, 1071, Adding feat list."); + WriteTimestampedLogEntry("pinc_henchmen, 1089, Adding feat list."); jHenchman = GffReplaceList(jHenchman, "FeatList", jFeatList); return jHenchman; } -json ResetSkills(json jHenchman, object oHenchman) +json ResetSkills(json jHenchman, object oHenchman, int nLevel) { // We remake the Skill List if the character doesn't have a level list! int nClass = GetClassByPosition(1, oHenchman); int nSkillPoints, nIntMod = GetAbilityModifier(ABILITY_INTELLIGENCE, oHenchman); - if(nIntMod > 0) nSkillPoints = nIntMod * 4; - if(GetRacialType(oHenchman) == RACIAL_TYPE_HUMAN) nSkillPoints += 4; - nSkillPoints += StringToInt(Get2DAString("classes", "SkillPointBase", nClass)) * 4; - int nMaxRanks = 5; + if(nIntMod > 0) nSkillPoints = nIntMod; + if(GetRacialType(oHenchman) == RACIAL_TYPE_HUMAN) nSkillPoints += 1; + nSkillPoints += StringToInt(Get2DAString("classes", "SkillPointBase", nClass)); + nSkillPoints = nSkillPoints * (nLevel + 3); + int nMaxRanks = 3 + nLevel; json jSkillList = JsonArray(); json jSkill; // Setup the Skill List. - WriteTimestampedLogEntry("pinc_henchmen, 1087, Generating skill list."); + WriteTimestampedLogEntry("pinc_henchmen, 1112, Generating skill list."); int nIndex, nSkillMaxRow = Get2DARowCount("skills"); for(nIndex = 0; nIndex < nSkillMaxRow; nIndex++) { @@ -1094,7 +1120,7 @@ json ResetSkills(json jHenchman, object oHenchman) jSkillList = JsonArrayInsert(jSkillList, jSkill); } // Give skill points based on the package. - WriteTimestampedLogEntry("pinc_henchmen, 1097, Gets " + IntToString(nSkillPoints) + " skill points."); + WriteTimestampedLogEntry("pinc_henchmen, 1116, Gets " + IntToString(nSkillPoints) + " skill points."); int nPackageSkill, nPackageRow, nCurrentRanks, bCrossClass, nClassRow, nNewRanks; string sPackage2DAName = Get2DAString("packages", "SkillPref2DA", nClass); int nPackageMaxRow = Get2DARowCount(sPackage2DAName); @@ -1123,7 +1149,7 @@ json ResetSkills(json jHenchman, object oHenchman) { jSkill = GffReplaceByte(jSkill, "Rank", nCurrentRanks + nNewRanks); jSkillList = JsonArraySet(jSkillList, nPackageSkill, jSkill); - WriteTimestampedLogEntry("pinc_henchmen, 1126, Adding " + IntToString(nNewRanks) + + WriteTimestampedLogEntry("pinc_henchmen, 1145, Adding " + IntToString(nNewRanks) + " ranks to " + Get2DAString("skills", "Label", nPackageSkill) + " CrossClass: " + IntToString(bCrossClass)); nSkillPoints -= nNewRanks; @@ -1135,9 +1161,9 @@ json ResetSkills(json jHenchman, object oHenchman) } json ResetSpellsKnown(json jClass, object oHenchman) { - WriteTimestampedLogEntry("pinc_henchmen, 1138, Checking for spells known."); + WriteTimestampedLogEntry("pinc_henchmen, 1157, Checking for spells known."); int nClass = GetClassByPosition(1, oHenchman); - WriteTimestampedLogEntry("pinc_henchmen, 1140, SpellCaster: " + Get2DAString("classes", "SpellCaster", nClass)); + WriteTimestampedLogEntry("pinc_henchmen, 1159, SpellCaster: " + Get2DAString("classes", "SpellCaster", nClass)); if(Get2DAString("classes", "SpellCaster", nClass) == "0") return jClass; int nLevel = 0; // We remake the Known spell list if the character doesn't have a level list! @@ -1179,7 +1205,7 @@ json ResetSpellsKnown(json jClass, object oHenchman) { nSpellsKnown = StringToInt(Get2DAString(sSpellKnown2DAName, "SpellLevel" + sSpellLevel, nLevel)); } - WriteTimestampedLogEntry("pinc_henchmen, 1165, nSpellsKnown: " + IntToString(nSpellsKnown)); + WriteTimestampedLogEntry("pinc_henchmen, 1201, nSpellsKnown: " + IntToString(nSpellsKnown)); jKnownList = JsonArray(); nPackageRow = 0; while(nPackageRow < nPackageMaxRow && nSpellsKnown > 0) @@ -1201,7 +1227,7 @@ json ResetSpellsKnown(json jClass, object oHenchman) if(JsonGetLength(jKnownList) == 0) { jClass = GffRemoveList(jClass, "KnownList" + sSpellLevel); - WriteTimestampedLogEntry("pinc_henchmen, 1187, Removing KnownList" + sSpellLevel); + WriteTimestampedLogEntry("pinc_henchmen, 1223, Removing KnownList" + sSpellLevel); } else if(JsonGetType(GffGetList(jClass, "KnownList" + sSpellLevel)) != JSON_TYPE_NULL) { @@ -1217,7 +1243,7 @@ json ResetSpellsKnown(json jClass, object oHenchman) if(JsonGetType(jKnownList) != JSON_TYPE_NULL) { jClass = GffRemoveList(jClass, "KnownList" + sSpellLevel); - WriteTimestampedLogEntry("pinc_henchmen, 1203, Removing KnownList" + sSpellLevel); + WriteTimestampedLogEntry("pinc_henchmen, 1239, Removing KnownList" + sSpellLevel); } } if(bMemorizesSpells) @@ -1226,7 +1252,7 @@ json ResetSpellsKnown(json jClass, object oHenchman) if(JsonGetType(jMemorizedList) != JSON_TYPE_NULL) { jClass = GffRemoveList(jClass, "MemorizedList" + sSpellLevel); - WriteTimestampedLogEntry("pinc_henchmen, 1210, Removing MemorizedList" + sSpellLevel); + WriteTimestampedLogEntry("pinc_henchmen, 1248, Removing MemorizedList" + sSpellLevel); } } else @@ -1237,7 +1263,7 @@ json ResetSpellsKnown(json jClass, object oHenchman) jSpell = GffReplaceByte(jSpell, "NumSpellsLeft", nSpellsKnown); jSpellsPerDayList = JsonArraySet(jSpellsPerDayList, nSpellLevel, jSpell); jClass = GffReplaceList(jClass, "SpellsPerDayList", jSpellsPerDayList); - WriteTimestampedLogEntry("pinc_henchmen, 1223, Setting SpellsPerDay to " + + WriteTimestampedLogEntry("pinc_henchmen, 1259, Setting SpellsPerDay to " + IntToString(nSpellsKnown)); } nSpellLevel++; @@ -1248,11 +1274,12 @@ object ResetCharacter(object oPC, object oHenchman) { SetLocalInt(oPC, "AI_IGNORE_NO_ASSOCIATE", TRUE); RemoveHenchman(oPC, oHenchman); + ChangeToStandardFaction(oHenchman, STANDARD_FACTION_DEFENDER); json jHenchman = ObjectToJson(oHenchman, TRUE); json jClassList = GffGetList(jHenchman, "ClassList"); json jClass = JsonArrayGet(jClassList, 0); // Set the Class list to the first class only and put at level 1. - int nClass = JsonGetInt(JsonObjectGet(jClass, "Class")); + int nClass = JsonGetInt(GffGetInt(jClass, "Class")); jClass = GffReplaceShort(jClass, "ClassLevel", 1); // Delete extra classes. int nClassIndex = JsonGetLength(jClassList) - 1; @@ -1260,15 +1287,10 @@ object ResetCharacter(object oPC, object oHenchman) { jClassList = JsonArrayDel(jClassList, nClassIndex--); } - int nHitPoints = StringToInt(Get2DAString("classes", "HitDie", nClass)); - int nMod = JsonGetInt(GffGetByte(jHenchman, "Con")); - if(nMod > 9) nHitPoints += (nMod - 10) / 2; - else nHitPoints += (nMod - 11) / 2; - jHenchman = GffReplaceShort(jHenchman, "CurrentHitPoints", nHitPoints); - jHenchman = GffReplaceShort(jHenchman, "HitPoints", nHitPoints); - jHenchman = GffReplaceShort(jHenchman, "MaxHitPoints", nHitPoints); jHenchman = GffReplaceDword(jHenchman, "Experience", 0); jHenchman = GffReplaceFloat(jHenchman, "ChallengeRating", 1.0); +// int nPackage = GetLocalInt(oHenchman, "PACKAGE_SELECTED_1"); +// if(nPackage) jHenchman = GffReplaceByte(jHenchman, "StartingPackage", nPackage); string s2DA = Get2DAString("classes", "AttackBonusTable", nClass); int nAtk = StringToInt(Get2DAString(s2DA, "BAB", 0)); jHenchman = GffReplaceByte(jHenchman, "BaseAttackBonus", nAtk); @@ -1282,7 +1304,7 @@ object ResetCharacter(object oPC, object oHenchman) json jLvlStatList = GffGetList(jHenchman, "LvlStatList"); if(JsonGetType(jLvlStatList) != JSON_TYPE_NULL) { - WriteTimestampedLogEntry("pinc_henchmen 1275, jLvlStatList: " + JsonDump(jLvlStatList, 4)); + //WriteTimestampedLogEntry("pinc_henchmen 1300, jLvlStatList: " + JsonDump(jLvlStatList, 4)); int nLevel = 1, nLevelTrack = 1; int nAbilityStatIncrease, nAbility; string sAbility; @@ -1290,7 +1312,7 @@ object ResetCharacter(object oPC, object oHenchman) json jLevel = JsonArrayGet(jLvlStatList, nLevel); while(JsonGetType(jLevel) != JSON_TYPE_NULL) { - WriteTimestampedLogEntry("inc_henchmen, 1297, Checking level " + IntToString(nLevelTrack)); + WriteTimestampedLogEntry("inc_henchmen, 1308, Checking level " + IntToString(nLevelTrack)); // Remove all Ability score increases for each level from ability scores. jAbility = GffGetByte(jLevel, "LvlStatAbility"); if(JsonGetType(jAbility) != JSON_TYPE_NULL) @@ -1316,12 +1338,21 @@ object ResetCharacter(object oPC, object oHenchman) jHenchman = GffRemoveList(jHenchman, "LvlStatList"); } jHenchman = CreateLevelStatList(jHenchman, oHenchman, oPC, 1); - jHenchman = ResetSkills(jHenchman, oHenchman); + int nHitPoints = StringToInt(Get2DAString("classes", "HitDie", nClass)); + int nConstitution = JsonGetInt(GffGetByte(jHenchman, "Con")); + int nRace = JsonGetInt(GffGetByte(jHenchman, "Race")); + nConstitution += StringToInt(Get2DAString("racialtypes", "ConAdjust", nRace)); + if(nConstitution > 9) nHitPoints += (nConstitution - 10) / 2; + else nHitPoints += (nConstitution - 11) / 2; + jHenchman = GffReplaceShort(jHenchman, "CurrentHitPoints", nHitPoints); + jHenchman = GffReplaceShort(jHenchman, "HitPoints", nHitPoints); + jHenchman = GffReplaceShort(jHenchman, "MaxHitPoints", nHitPoints); + jHenchman = ResetSkills(jHenchman, oHenchman, 1); jHenchman = ResetFeats(jHenchman, oHenchman); jClass = ResetSpellsKnown(jClass, oHenchman); jClassList = JsonArraySet(jClassList, 0, jClass); jHenchman = GffReplaceList(jHenchman, "ClassList", jClassList); - //WriteTimestampedLogEntry("pinc_henchmen 1397, jHenchman: " + JsonDump(jHenchman, 4)); + //WriteTimestampedLogEntry("pinc_henchmen 1348, jHenchman: " + JsonDump(jHenchman, 4)); location lLocation = GetLocation(oHenchman); int nFamiliar, nCompanion; object oCompanion = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oHenchman); @@ -1342,13 +1373,13 @@ void CreateCharacterEditGUIPanel(object oPC, object oHenchman) // Group 1 (Portrait)******************************************************* 151 / 73 // Group 1 Row 1 *********************************************************** 350 / 91 json jGroupRow = JsonArrayInsert(JsonArray(), NuiSpacer()); - jGroupRow = CreateTextEditBox (jGroupRow, "name_placeholder", "char_name", 15, FALSE, 140.0, 20.0); + jGroupRow = CreateTextEditBox (jGroupRow, "name_placeholder", "char_name", 50, FALSE, 140.0, 20.0); jGroupRow = JsonArrayInsert(jGroupRow, NuiSpacer()); // Add the group row to the group column. json jGroupCol = JsonArrayInsert(JsonArray(), NuiRow(jGroupRow)); // Group 1 Row 1 *********************************************************** 350 / 91 jGroupRow = JsonArrayInsert(JsonArray(), NuiSpacer()); - jGroupRow = CreateTextEditBox (jGroupRow, "port_placeholder", "port_name", 15, FALSE, 140.0, 20.0, "port_tooltip"); + jGroupRow = CreateTextEditBox (jGroupRow, "port_placeholder", "port_name", 16, FALSE, 140.0, 20.0, "port_tooltip"); jGroupRow = JsonArrayInsert(jGroupRow, NuiSpacer()); // Add the group row to the group column. jGroupCol = JsonArrayInsert(jGroupCol, NuiRow(jGroupRow)); @@ -1503,11 +1534,13 @@ void CreateCharacterEditGUIPanel(object oPC, object oHenchman) NuiSetBindWatch(oPC, nToken, "cmb_class_selected", bNoClass); NuiSetBind(oPC, nToken, "cmb_class_event", JsonBool(bNoClass)); int nPackage = GetLocalInt(oHenchman, "PACKAGE_SELECTED_" + IntToString(nClassOption + 1)); + //SendMessageToPC(oPC, "nPackage: " + IntToString(nPackage) + " nSelection: " + IntToString(GetSelectionByPackage2DA(sClass, nPackage))); if(nPackage == 0) { nPackage = GetPackageBySelection2DA(sClass, 0); SetLocalInt(oHenchman, "PACKAGE_SELECTED_" + IntToString(nClassOption + 1), nPackage); } + //SendMessageToPC(oPC, "nPackage: " + IntToString(nPackage) + " sClass: " + sClass); NuiSetBind(oPC, nToken, "cmb_package_selected", JsonInt(GetSelectionByPackage2DA(sClass, nPackage))); NuiSetBindWatch(oPC, nToken, "cmb_package_selected", bNoClass); NuiSetBind(oPC, nToken, "cmb_package_event", JsonBool(bNoClass)); @@ -1538,4 +1571,3 @@ void CreateCharacterDescriptionNUI(object oPC, string sName, string sIcon, strin // Row 2 NuiSetBind(oPC, nToken, "btn_ok_event", JsonBool(TRUE)); } - diff --git a/_module/nwn_erf.exe b/_module/nwn_erf.exe index ae3ee49..d071908 100644 Binary files a/_module/nwn_erf.exe and b/_module/nwn_erf.exe differ diff --git a/_module/nwn_gff.exe b/_module/nwn_gff.exe index 7fdf454..bafc985 100644 Binary files a/_module/nwn_gff.exe and b/_module/nwn_gff.exe differ